1+ package Lecture20 ;
2+
3+ import java .util .Scanner ;
4+
5+ public class sizeOfBinaryTree {
6+
7+ private class Node {
8+ int data ;
9+ Node left ;
10+ Node right ;
11+
12+ Node (int data , Node left , Node right ) {
13+ this .data = data ;
14+ this .left = left ;
15+ this .right = right ;
16+ }
17+ }
18+
19+ private Node root ;
20+ private int size = 0 ;
21+
22+ public sizeOfBinaryTree () {
23+ Scanner sc = new Scanner (System .in );
24+ this .root = takeTreeInput (sc , null , false );
25+ }
26+
27+ private Node takeTreeInput (Scanner sc , Node parent , boolean isLeftorRight ) {
28+ if (parent == null ) {
29+ System .out .print ("Enter data for root node: " );
30+ } else {
31+ if (isLeftorRight ) {
32+ System .out .print ("Enter data for left child of " + parent .data + ": " );
33+ } else {
34+ System .out .print ("Enter data for right child of: " + parent .data + ": " );
35+
36+ }
37+ }
38+
39+ int data = sc .nextInt ();
40+ Node node = new Node (data , null , null );
41+ this .size ++;
42+
43+ boolean choice = false ;
44+ System .out .print ("Do you have left child for " + node .data + " -> true/false: " );
45+ choice = sc .nextBoolean ();
46+ if (choice ) {
47+ node .left = this .takeTreeInput (sc , node , true );
48+ }
49+
50+ choice = false ;
51+ System .out .print ("Do you have right child for " + node .data + " -> true/false: " );
52+ choice = sc .nextBoolean ();
53+ if (choice ) {
54+ node .right = this .takeTreeInput (sc , node , false );
55+ }
56+
57+ return node ;
58+ }
59+
60+ public int size () {
61+ return this .size (this .root );
62+ }
63+
64+ private int size (Node node ) {
65+ if (node == null ){
66+ return 0 ;
67+ }
68+ int lsize = size (node .left );
69+ int rsize = size (node .right );
70+
71+ int ans = lsize + rsize + 1 ;
72+
73+ return ans ;
74+ }
75+
76+ public static void main (String [] args ) {
77+
78+ sizeOfBinaryTree tree = new sizeOfBinaryTree ();
79+
80+ int treeSize = tree .size ();
81+ System .out .println ("=============\n " );
82+ System .out .println ("size of tree is: " + treeSize );
83+ }
84+ }
85+
86+
87+
88+
89+ /* output:
90+ Enter data for root node: 20
91+ Do you have left child for 20 -> true/false: true
92+ Enter data for left child of 20: 10
93+ Do you have left child for 10 -> true/false: true
94+ Enter data for left child of 10: 28
95+ Do you have left child for 28 -> true/false: false
96+ Do you have right child for 28 -> true/false: false
97+ Do you have right child for 10 -> true/false: true
98+ Enter data for right child of: 10: 16
99+ Do you have left child for 16 -> true/false: false
100+ Do you have right child for 16 -> true/false: false
101+ Do you have right child for 20 -> true/false: true
102+ Enter data for right child of: 20: 30
103+ Do you have left child for 30 -> true/false:
104+ true
105+ Enter data for left child of 30: 42
106+ Do you have left child for 42 -> true/false: false
107+ Do you have right child for 42 -> true/false: false
108+ Do you have right child for 30 -> true/false: false
109+ =============
110+
111+ size of tree is: 6
112+ */
0 commit comments