Set 2 - Javatpoint 101 - 256 IQ
Set 2 - Javatpoint 101 - 256 IQ
2 It is also known as static binding, It is also known as dynamic binding, late binding,
early binding, or overloading. overriding, or dynamic method dispatch.
Output:
More details.
1. class Bike{
2. int speedlimit=90;
3. }
4. class Honda3 extends Bike{
5. int speedlimit=150;
6. public static void main(String args[]){
7. Bike obj=new Honda3();
8. System.out.println(obj.speedlimit);//90
9. }
Test it Now
Output:
90
More details.
Static Binding
1. class Dog{
2. private void eat(){System.out.println("dog is eating...");}
3.
4. public static void main(String args[]){
5. Dog d1=new Dog();
6. d1.eat();
7. }
8. }
Dynamic Binding
1. class Animal{
2. void eat(){System.out.println("animal is eating...");}
3. }
4.
5. class Dog extends Animal{
6. void eat(){System.out.println("dog is eating...");}
7.
8. public static void main(String args[]){
9. Animal a=new Dog();
10. a.eat();
11. }
12.}
More details.
1. class BaseTest
2. {
3. void print()
4. {
5. System.out.println("BaseTest:print() called");
6. }
7. }
8. public class Test extends BaseTest
9. {
10. void print()
11. {
12. System.out.println("Test:print() called");
13. }
14. public static void main (String args[])
15. {
16. BaseTest b = new Test();
17. b.print();
18. }
19.}
Output
Test:print() called
Explanation
1. class Simple1{
2. public static void main(String args[]){
3. Simple1 s=new Simple1();
4. System.out.println(s instanceof Simple1);//true
5. }
6. }
Test it Now
Output
true
An object of subclass type is also a type of parent class. For example, if Dog
extends Animal then object of Dog can be referred by either Dog or Animal
class.
o Abstract Class
o Interface
More details.
More details.
Output
running safely
More details.
110) Can there be an abstract method without an abstract class?
No, if there is an abstract method in a class, that class must be abstract.
Yes, the program is written correctly. The Main class provides the definition
of abstract method multiply declared in abstract class Calculation. The
output of the program will be:
Output
384
112) Can you use abstract and final both with a method?
No, because we need to override the abstract method to provide its
implementation, whereas we can't override the final method.
More details.
An abstract class can have a method body The interface has only abstract methods.
(non-abstract methods).
An abstract class can have instance variables. An interface cannot have instance
variables.
An abstract class can have the constructor. The interface cannot have the
constructor.
An abstract class can have static methods. The interface cannot have static
methods.
You can extend one abstract class. You can implement multiple interfaces.
The abstract class can provide the The Interface can't provide the
implementation of the interface. implementation of the abstract
class.
An abstract class can extend another Java An interface can extend another Java
class and implement multiple Java interfaces. interface only.
An abstract class can be extended using An interface class can be implemented
keyword extends using keyword implements
A Java abstract class can have class Members of a Java interface are public by
members like private, protected, etc. default.
Example: Example:
public abstract class Shape{ public interface Drawable{
public abstract void draw(); void draw();
} }
o By providing only the setter or getter method, you can make the class read-
only or write-only. In other words, you can skip the getter or setter methods.
o It provides you the control over the data. Suppose you want to set the value
of id which should be greater than 100 only, you can write the logic inside the
setter method. You can write the logic not to store the negative numbers in
the setter methods.
o It is a way to achieve data hiding in Java because other class will not be able
to access the data through the private data members.
o The encapsulate class is easy to test. So, it is better for unit testing.
o The standard IDE's are providing the facility to generate the getters and
setters. So, it is easy and fast to create an encapsulated class in Java.
1. //save as Simple.java
2. package mypack;
3. public class Simple{
4. public static void main(String args[]){
5. System.out.println("Welcome to package");
6. }
7. }
More details.
o Now compile the file by running the following command on the terminal.
1. javac -d . your_class_name.java
o Now, run the class file by using the absolute class file name, like following.
1. java package_name.class_name
129) Can I import same package/class twice? Will the JVM load
the package twice at runtime?
One can import the same package or the same class multiple times. Neither
compiler nor JVM complains about it. However, the JVM will internally load
the class only once no matter how many times you import the same class.
130) What is the static import?
By static import, we can access the static members of a class directly, and
there is no to qualify it with the class name.
More details.
o Checked Exception: Checked exceptions are the one which are checked at
compile-time. For example, SQLException, ClassNotFoundException, etc.
o Error: Error cause the program to exit since they are not recoverable. For
Example, OutOfMemoryError, AssertionError, etc.
More details.
1) Checked Exception
The classes that extend Throwable class except RuntimeException and Error
are known as checked exceptions, e.g., IOException, SQLException, etc.
Checked exceptions are checked at compile-time.
2) Unchecked Exception
The classes that extend RuntimeException are known as unchecked
exceptions, e.g., ArithmeticException, NullPointerException, etc. Unchecked
exceptions are not checked at compile-time.
More details.
Output:
Output
Explanation
2) The checked exceptions cannot be The checked exception can be propagated with
propagated with throw only. throws
4) The throw keyword is used within The throws keyword is used with the method
the method. signature.
5) You cannot throw multiple You can declare multiple exceptions, e.g., public
exceptions. void method()throws IOException, SQLException.
More details.
Output
Explanation
Output
Explanation
The object of Calculation is thrown from the try block which is caught in the
catch block. The add() of Calculation class is called with the integer values
10 and 20 by using the object of this class. Therefore there sum 30 is
printed. The object of the Main class can only be thrown in the case when the
type of the object is throwable. To do so, we need to extend the throwable
class.
More details.
1. class TestExceptionPropagation1{
2. void m(){
3. int data=50/0;
4. }
5. void n(){
6. m();
7. }
8. void p(){
9. try{
10. n();
11. }catch(Exception e){System.out.println("exception handled");}
12. }
13. public static void main(String args[]){
14. TestExceptionPropagation1 obj=new TestExceptionPropagation1();
15. obj.p();
16. System.out.println("normal flow...");
17. }
18.}
Test it Now
Output:
exception handled
normal flow...
More details.
Output
Explanation
In the main method, a() of Main is called which prints a message and call b().
The method b() prints some message and then call c(). The method c()
throws an exception which is handled by the catch block of method b.
However, It propagates this exception by using throw Exception() to be
handled by the method a(). As we know, finally block is always executed
therefore the finally block in the method b() is executed first and prints a
message. At last, the exception is handled by the catch block of the method
a().
148) What is the output of the following Java program?
Output
result = 290
Explanation
1. class Testimmutablestring{
2. public static void main(String args[]){
3. String s="Sachin";
4. s.concat(" Tendulkar");//concat() method appends the string at the end
5. System.out.println(s);//will print Sachin because strings are immutable objects
6. }
7. }
Test it Now
Output:
Sachin
More details.
More details.
152) How many ways can we create the string object?
1) String Literal
1. String s="welcome";
Each time you create a string literal, the JVM checks the "string constant
pool" first. If the string already exists in the pool, a reference to the pooled
instance is returned. If the string doesn't exist in the pool, a new string
instance is created and placed in the pool. String objects are stored in a
special memory area known as the string constant pool For example:
1. String s1="Welcome";
2. String s2="Welcome";//It doesn't create a new instance
2) By new keyword
In such case, JVM will create a new string object in normal (non-pool) heap
memory, and the literal "Welcome" will be placed in the constant string pool.
The variable s will refer to the object in a heap (non-pool).
1. String s1="Welcome";
2. String s2="Welcome";
3. String s3="Welcome";
Only one object will be created using the above code because strings in Java
are immutable.
More details.
More details.
More details.
Output
a equals b
Explanation
The operator == also check whether the references of the two string objects
are equal or not. Although both of the strings contain the same content, their
references are not equal because both are created by different
ways(Constructor and String literal) therefore, a == b is unequal. On the
other hand, the equal() method always check for the content. Since their
content is equal hence, a equals b is printed.
Output
true
Explanation
The intern method returns the String object reference from the string pool. In
this case, s1 is created by using string literal whereas, s2 is created by using
the String pool. However, s2 is changed to the reference of s1, and the
operator == returns true.
2) The String is slow and consumes more memory The StringBuffer is fast and
when you concat too many strings because every consumes less memory when
time it creates a new instance. you cancat strings.
3) The String class overrides the equals() method of The StringBuffer class doesn't
Object class. So you can compare the contents of override the equals() method of
two strings by equals() method. Object class.
No StringBuffer StringBuilder
.
1. class Student{
2. int rollno;
3. String name;
4. String city;
5.
6. Student(int rollno, String name, String city){
7. this.rollno=rollno;
8. this.name=name;
9. this.city=city;
10. }
11.
12. public String toString(){//overriding the toString() method
13. return rollno+" "+name+" "+city;
14. }
15. public static void main(String args[]){
16. Student s1=new Student(101,"Raj","lucknow");
17. Student s2=new Student(102,"Vijay","ghaziabad");
18.
19. System.out.println(s1);//compiler writes here s1.toString()
20. System.out.println(s2);//compiler writes here s2.toString()
21. }
22.}
Output:
Output
o MatchResult Interface
o Matcher class
o Pattern class
o PatternSyntaxException class
165) How the metacharacters are different from the ordinary
characters?
Metacharacters have the special meaning to the regular expression engine.
The metacharacters are ^, $, ., *, +, etc. The regular expression engine does
not consider them as the regular characters. To enable the regular
expression engine treating the metacharacters as ordinary characters, we
need to escape the metacharacters with the backslash.
1. import java.util.regex.*;
2. class RegexExample2{
3. public static void main(String args[]){
4. System.out.println(Pattern.matches(".s", "as")); //line 4
5. System.out.println(Pattern.matches(".s", "mk")); //line 5
6. System.out.println(Pattern.matches(".s", "mst")); //line 6
7. System.out.println(Pattern.matches(".s", "amms")); //line 7
8. System.out.println(Pattern.matches("..s", "mas")); //line 8
9. }}
Output
true
false
false
false
true
Explanation
line 4 prints true since the second character of string is s, line 5 prints false
since the second character is not s, line 6 prints false since there are more
than 3 characters in the string, line 7 prints false since there are more than 2
characters in the string, and it contains more than 2 characters as well, line
8 prints true since the third character of the string is s.
o Nested classes represent a special type of relationship that is it can access all
the members (data members and methods) of the outer class including
private.
o Nested classes are used to develop a more readable and maintainable code
because it logically groups classes and interfaces in one place only.
o Code Optimization: It requires less code to write.
1. class Java_Outer_class{
2. //code
3. class Java_Nested_class{
4. //code
5. }
6. }
7.
There are two types of nested classes, static nested class, and non-static
nested class. The non-static nested class can also be called as inner-class
More details.
171) What are the types of inner classes (non-static nested class)
used in Java?
There are mainly three types of inner classes used in Java.
Type Description
Anonymous Inner A class created for implementing an interface or extending class. Its
Class name is decided by the java compiler.
More details.
173) Can we access the non-final local variable, inside the local
inner class?
No, the local variable must be constant if you want to access it in the local
inner class.
More details.
Output:
nice fruits
Consider the following example for the working of the anonymous class using
interface.
1. interface Eatable{
2. void eat();
3. }
4. class TestAnnonymousInner1{
5. public static void main(String args[]){
6. Eatable e=new Eatable(){
7. public void eat(){System.out.println("nice fruits");}
8. };
9. e.eat();
10. }
11.}
Test it Now
Output:
nice fruits
1. interface interface_name{
2. ...
3. interface nested_interface_name{
4. ...
5. }
6. }
7.
More details.
More details.
More details.
More details.
1) By nulling a reference:
1. new Employee();
InputStream Hierarchy
190) What do you understand by an IO stream?
The stream is a sequence of data that flows from source to destination. It is
composed of bytes. In Java, three streams are created for us automatically.
1. import java.io.FileOutputStream;
2. public class FileOutputStreamExample {
3. public static void main(String args[]){
4. try{
5. FileOutputStream fout=new FileOutputStream("D:\\testout.txt");
6. fout.write(65);
7. fout.close();
8. System.out.println("success...");
9. }catch(Exception e){System.out.println(e);}
10. }
11.}
Java FileInputStream class obtains input bytes from a file. It is used for
reading byte-oriented data (streams of raw bytes) such as image data, audio,
video, etc. You can also read character-stream data. However, for reading
streams of characters, it is recommended to use FileReader class. Consider
the following example for reading bytes from a file.
1. import java.io.FileInputStream;
2. public class DataStreamExample {
3. public static void main(String args[]){
4. try{
5. FileInputStream fin=new FileInputStream("D:\\testout.txt");
6. int i=fin.read();
7. System.out.print((char)i);
8.
9. fin.close();
10. }catch(Exception e){System.out.println(e);}
11. }
12. }
13.
1. package com.javatpoint;
2. import java.io.*;
3. import java.security.PermissionCollection;
4. public class FilePermissionExample{
5. public static void main(String[] args) throws IOException {
6. String srg = "D:\\IO Package\\java.txt";
7. FilePermission file1 = new FilePermission("D:\\IO Package\\-", "read");
8. PermissionCollection permission = file1.newPermissionCollection();
9. permission.add(file1);
10. FilePermission file2 = new FilePermission(srg, "write");
11. permission.add(file2);
12. if(permission.implies(new FilePermission(srg, "read,write"))) {
13. System.out.println("Read, Write permission is granted for the path "+srg );
14. }else {
15. System.out.println("No Read, Write permission is granted for the path "+srg)
; }
16. }
17.}
Output
198) In Java, How many ways you can take input from the
console?
In Java, there are three ways by using which, we can take input from the
console.
1. import java.io.Console;
2. class ReadStringTest{
3. public static void main(String args[]){
4. Console c=System.console();
5. System.out.println("Enter your name: ");
6. String n=c.readLine();
7. System.out.println("Welcome "+n);
8. }
9. }
More details.
1. import java.io.FileInputStream;
2. import java.io.FileOutputStream;
3. import java.io.IOException;
4. import java.io.NotSerializableException;
5. import java.io.ObjectInputStream;
6. import java.io.ObjectOutputStream;
7. import java.io.Serializable;
8. class Person implements Serializable
9. {
10. String name = " ";
11. public Person(String name)
12. {
13. this.name = name;
14. }
15.}
16.class Employee extends Person
17.{
18. float salary;
19. public Employee(String name, float salary)
20. {
21. super(name);
22. this.salary = salary;
23. }
24. private void writeObject(ObjectOutputStream out) throws IOException
25. {
26. throw new NotSerializableException();
27. }
28. private void readObject(ObjectInputStream in) throws IOException
29. {
30. throw new NotSerializableException();
31. }
32.
33.}
34.public class Test
35.{
36. public static void main(String[] args)
37. throws Exception
38. {
39. Employee emp = new Employee("Sharma", 10000);
40.
41. System.out.println("name = " + emp.name);
42. System.out.println("salary = " + emp.salary);
43.
44. FileOutputStream fos = new FileOutputStream("abc.ser");
45. ObjectOutputStream oos = new ObjectOutputStream(fos);
46.
47. oos.writeObject(emp);
48.
49. oos.close();
50. fos.close();
51.
52. System.out.println("Object has been serialized");
53.
54. FileInputStream f = new FileInputStream("ab.txt");
55. ObjectInputStream o = new ObjectInputStream(f);
56.
57. Employee emp1 = (Employee)o.readObject();
58.
59. o.close();
60. f.close();
61.
62. System.out.println("Object has been deserialized");
63.
64. System.out.println("name = " + emp1.name);
65. System.out.println("salary = " + emp1.salary);
66. }
67.}
1. import java.io.*;
2. class Depersist{
3. public static void main(String args[])throws Exception{
4.
5. ObjectInputStream in=new ObjectInputStream(new FileInputStream("f.txt"));
6. Student s=(Student)in.readObject();
7. System.out.println(s.id+" "+s.name);
8.
9. in.close();
10. }
11.}
211 ravi
204) What is the transient keyword?
If you define any data member as transient, it will not be serialized. By
determining transient keyword, the value of variable need not persist when it
is restored. More details.
No Serializable Externalizable
.
1) The Serializable interface does not The Externalizable interface contains is not a
have any method, i.e., it is a marker interface, It contains two methods, i.e.,
marker interface. writeExternal() and readExternal().
3) It is easy to implement but has the It is used to perform the serialization and often
higher performance cost. result in better performance.
209) What are the steps that are followed when two computers
connect through TCP?
There are the following steps that are performed when two computers
connect through TCP.
o The ServerSocket object is instantiated by the server which denotes the port
number to which, the connection will be made.
o After instantiating the ServerSocket object, the server invokes accept()
method of ServerSocket class which makes server wait until the client
attempts to connect to the server on the given port.
o Meanwhile, the server is waiting, a socket is created by the client by
instantiating Socket class. The socket class constructor accepts the server
port number and server name.
o The Socket class constructor attempts to connect with the server on the
specified name. If the connection is established, the client will have a socket
object that can communicate with the server.
o The accept() method invoked by the server returns a reference to the new
socket on the server that is connected with the server.
File: MyServer.java
1. import java.io.*;
2. import java.net.*;
3. public class MyServer {
4. public static void main(String[] args){
5. try{
6. ServerSocket ss=new ServerSocket(6666);
7. Socket s=ss.accept();//establishes connection
8. DataInputStream dis=new DataInputStream(s.getInputStream());
9. String str=(String)dis.readUTF();
10.System.out.println("message= "+str);
11.ss.close();
12.}catch(Exception e){System.out.println(e);}
13.}
14.}
File: MyClient.java
1. import java.io.*;
2. import java.net.*;
3. public class MyClient {
4. public static void main(String[] args) {
5. try{
6. Socket s=new Socket("localhost",6666);
7. DataOutputStream dout=new DataOutputStream(s.getOutputStream());
8. dout.writeUTF("Hello Server");
9. dout.flush();
10.dout.close();
11.s.close();
12.}catch(Exception e){System.out.println(e);}
13.}
14.}
1. import java.io.*;
2. import java.net.*;
3. public class InetDemo{
4. public static void main(String[] args){
5. try{
6. InetAddress ip=InetAddress.getByName("195.201.10.8");
7.
8. System.out.println("Host Name: "+ip.getHostName());
9. }catch(Exception e){System.out.println(e);}
10.}
11.}
12.
1. class Simple{
2. public Simple()
3. {
4. System.out.println("Constructor of Simple class is invoked");
5. }
6. void message(){System.out.println("Hello Java");}
7. }
8.
9. class Test1{
10. public static void main(String args[]){
11. try{
12. Class c=Class.forName("Simple");
13. Simple s=(Simple)c.newInstance();
14. s.message();
15. }catch(Exception e){System.out.println(e);}
16. }
17.}
Output
Explanation
Syntax
javap fully_class_name
217) Can you access the private method from outside the class?
Yes, by changing the runtime behavior of a class if the class is not secured.
More details.
boolean Boolean
char Character
byte Byte
short Short
int Integer
long Long
float Float
double Double
It can occur whenever a wrapper class object is expected, and primitive data
type is provided or vice versa.
Output
bye
Explanation
The Integer class caches integer values from -127 to 127. Therefore, the
Integer objects can only be created in the range -128 to 127. The
operator == will not work for the value greater than 127; thus bye is
printed.
o Standard input
o Error output streams
o Standard output
o utility method to copy the portion of an array
o utilities to load files and libraries
There are the three fields of Java System class, i.e., static printstream err,
static inputstream in, and standard output stream.
228) Write a Java program that prints all the values given at
command-line.
Program
1. class A{
2. public static void main(String args[]){
3.
4. for(int i=0;i<args.length;i++)
5. System.out.println(args[i]);
6.
7. }
8. }
1. compile by > javac A.java
2. run by > java A sonoo jaiswal 1 3 abc
Output
sonoo
jaiswal
1
3
abc
o init()
o start()
o paint()
o stop()
o destroy()
236) Can you write a Java class that could be used both as an
applet as well as an application?
Yes. Add a main() method to the applet.
Internationalization Interview Questions
1. import java.util.*;
2. public class LocaleExample {
3. public static void main(String[] args) {
4. Locale locale=Locale.getDefault();
5. //Locale locale=new Locale("fr","fr");//for the specific locale
6.
7. System.out.println(locale.getDisplayCountry());
8. System.out.println(locale.getDisplayLanguage());
9. System.out.println(locale.getDisplayName());
10.System.out.println(locale.getISO3Country());
11.System.out.println(locale.getISO3Language());
12.System.out.println(locale.getLanguage());
13.System.out.println(locale.getCountry());
14.
15.}
16.}
Output:
United States
English
English (United States)
USA
eng
en
US
1. //Employee.java
2. package mypack;
3. public class Employee implements java.io.Serializable{
4. private int id;
5. private String name;
6. public Employee(){}
7. public void setId(int id){this.id=id;}
8. public int getId(){return id;}
9. public void setName(String name){this.name=name;}
10.public String getName(){return name;}
11.}
The stub is an object, acts as a gateway for the client side. All the outgoing
requests are routed through it. It resides at the client side and represents the
remote object. When the caller invokes the method on the stub object, it
does the following tasks:
Skeleton
The skeleton is an object, acts as a gateway for the server side object. All the
incoming requests are routed through it. When the skeleton receives the
incoming request, it does the following tasks:
o It reads the parameter for the remote method.
o It invokes the method on the actual remote object.
o It writes and transmits (marshals) the result to the caller.
244) What are the steps involved to write RMI based programs?
There are 6 steps which are performed to write RMI based programs.
Output:
Printing Sorted List . . .
7
9
10
12
23
34
34
44
78
101
1. import java.util.*;
2. public class BinarySearch {
3. public static void main(String[] args) {
4. int[] arr = {16, 19, 20, 23, 45, 56, 78, 90, 96, 100};
5. int item, location = -1;
6. System.out.println("Enter the item which you want to search");
7. Scanner sc = new Scanner(System.in);
8. item = sc.nextInt();
9. location = binarySearch(arr,0,9,item);
10. if(location != -1)
11. System.out.println("the location of the item is "+location);
12. else
13. System.out.println("Item not found");
14. }
15.public static int binarySearch(int[] a, int beg, int end, int item)
16.{
17. int mid;
18. if(end >= beg)
19. {
20. mid = (beg + end)/2;
21. if(a[mid] == item)
22. {
23. return mid+1;
24. }
25. else if(a[mid] < item)
26. {
27. return binarySearch(a,mid+1,end,item);
28. }
29. else
30. {
31. return binarySearch(a,beg,mid-1,item);
32. }
33. }
34. return -1;
35.}
36.}
Output:
Output:
Output:
Enter Item ?
23
Item found at location 2
Enter Item ?
22
Item not found
252) How to perform merge sort in Java?
Consider the following program to perform merge sort in Java.
Output:
Sorted array
23
23
23
34
45
65
67
89
90
101
Output:
Output:
Output:
1. import java.util.LinkedList;
2. import java.util.Queue;
3.
4. public class DiffOddEven {
5.
6. //Represent a node of binary tree
7. public static class Node{
8. int data;
9. Node left;
10. Node right;
11.
12. public Node(int data){
13. //Assign data to the new node, set left and right children to null
14. this.data = data;
15. this.left = null;
16. this.right = null;
17. }
18. }
19.
20. //Represent the root of binary tree
21. public Node root;
22.
23. public DiffOddEven(){
24. root = null;
25. }
26.
27. //difference() will calculate the difference between sum of odd and even levels of
binary tree
28. public int difference() {
29. int oddLevel = 0, evenLevel = 0, diffOddEven = 0;
30.
31. //Variable nodesInLevel keep tracks of number of nodes in each level
32. int nodesInLevel = 0;
33.
34. //Variable currentLevel keep track of level in binary tree
35. int currentLevel = 0;
36.
37. //Queue will be used to keep track of nodes of tree level-wise
38. Queue<Node> queue = new LinkedList<Node>();
39.
40. //Check if root is null
41. if(root == null) {
42. System.out.println("Tree is empty");
43. return 0;
44. }
45. else {
46. //Add root node to queue as it represents the first level
47. queue.add(root);
48. currentLevel++;
49.
50. while(queue.size() != 0) {
51.
52. //Variable nodesInLevel will hold the size of queue i.e. number of elemen
ts in queue
53. nodesInLevel = queue.size();
54.
55. while(nodesInLevel > 0) {
56. Node current = queue.remove();
57.
58. //Checks if currentLevel is even or not.
59. if(currentLevel % 2 == 0)
60. //If level is even, add nodes's to variable evenLevel
61. evenLevel += current.data;
62. else
63. //If level is odd, add nodes's to variable oddLevel
64. oddLevel += current.data;
65.
66. //Adds left child to queue
67. if(current.left != null)
68. queue.add(current.left);
69. //Adds right child to queue
70. if(current.right != null)
71. queue.add(current.right);
72. nodesInLevel--;
73. }
74. currentLevel++;
75. }
76. //Calculates difference between oddLevel and evenLevel
77. diffOddEven = Math.abs(oddLevel - evenLevel);
78. }
79. return diffOddEven;
80. }
81.
82. public static void main (String[] args) {
83.
84. DiffOddEven bt = new DiffOddEven();
85. //Add nodes to the binary tree
86. bt.root = new Node(1);
87. bt.root.left = new Node(2);
88. bt.root.right = new Node(3);
89. bt.root.left.left = new Node(4);
90. bt.root.right.left = new Node(5);
91. bt.root.right.right = new Node(6);
92.
93. //Display the difference between sum of odd level and even level nodes
94. System.out.println("Difference between sum of odd level and even level nodes:
" + bt.difference());
95.}
96.}
Output: