1+ package Lecture20 ;
2+
3+ import java .util .Scanner ;
4+
5+ public class maxDataInBinaryTree {
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 maxDataInBinaryTree () {
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 max () {
61+ return this .maxNodeData (this .root );
62+ }
63+
64+ private int maxNodeData (Node node ) {
65+ if (node == null ) {
66+ return Integer .MIN_VALUE ;
67+ }
68+ int leftSubtreeMax = maxNodeData (node .left );
69+ int rightSubtreeMax = maxNodeData (node .right );
70+
71+ int maxVal = Math .max (leftSubtreeMax ,
72+ (Math .max (node .data , rightSubtreeMax )));
73+
74+ return maxVal ;
75+
76+ }
77+
78+ // Driver program
79+
80+ public static void main (String [] args ) {
81+
82+ maxDataInBinaryTree tree = new maxDataInBinaryTree ();
83+
84+ int maxData = tree .max ();
85+ System .out .println ("=============\n " );
86+ System .out .println ("max value is: " + maxData );
87+ }
88+ }
89+
90+
91+
92+
93+ /* output
94+ Enter data for root node: 20
95+ Do you have left child for 20 -> true/false: true
96+ Enter data for left child of 20: 10
97+ Do you have left child for 10 -> true/false: true
98+ Enter data for left child of 10: 28
99+ Do you have left child for 28 -> true/false: false
100+ Do you have right child for 28 -> true/false: false
101+ Do you have right child for 10 -> true/false: true
102+ Enter data for right child of: 10: 16
103+ Do you have left child for 16 -> true/false: false
104+ Do you have right child for 16 -> true/false: false
105+ Do you have right child for 20 -> true/false: true
106+ Enter data for right child of: 20: 30
107+ Do you have left child for 30 -> true/false: true
108+ Enter data for left child of 30: 42
109+ Do you have left child for 42 -> true/false: false
110+ Do you have right child for 42 -> true/false: false
111+ Do you have right child for 30 -> true/false: false
112+ =============
113+
114+ max value is: 42
115+ */
0 commit comments