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