1
+ // 100: Same Tree
2
+ // https://leetcode.com/problems/same-tree/
3
+
4
+ import java .util .Queue ;
5
+ import java .util .ArrayList ;
6
+ import java .util .LinkedList ;
7
+
8
+
9
+ class Solution {
10
+ public static class TreeNode {
11
+ Integer val ;
12
+ TreeNode left ;
13
+ TreeNode right ;
14
+ TreeNode () {}
15
+ TreeNode (Integer val ) { this .val = val ; }
16
+ TreeNode (Integer val , TreeNode left , TreeNode right ) { this .val = val ; this .left = left ; this .right = right ; }
17
+ }
18
+
19
+ public static class Tree {
20
+ TreeNode root ;
21
+ Tree () { this .root = null ; }
22
+ }
23
+
24
+ private static TreeNode creator (Integer [] values , TreeNode root , int i , int n ) {
25
+ if (n ==0 ) return null ;
26
+ if (i <n ) {
27
+ TreeNode temp = new TreeNode (values [i ]);
28
+ root = temp ;
29
+ root .left = creator (values , root .left , 2 *i +1 , n );
30
+ root .right = creator (values , root .right , 2 *i +2 , n );
31
+ }
32
+ return root ;
33
+ }
34
+
35
+ public static void createTree (Tree tree , Integer [] inputs ) {
36
+ tree .root = creator (inputs , tree .root , 0 , inputs .length );
37
+ }
38
+
39
+ public static void showTree (TreeNode root ) {
40
+ Queue <TreeNode > q = new LinkedList <>();
41
+ ArrayList <ArrayList <Integer >> result = new ArrayList <>();
42
+ ArrayList <Integer > c = new ArrayList <>();
43
+ if (root == null ) { System .out .println ("Empty !" ); return ; }
44
+ q .add (root );
45
+ q .add (null );
46
+ while (!q .isEmpty ()) {
47
+ TreeNode t = q .poll ();
48
+ if (t ==null ) {
49
+ result .add (c );
50
+ c = new ArrayList <>();
51
+ if (q .size () > 0 ) q .add (null );
52
+ } else {
53
+ c .add (t .val );
54
+ if (t .left !=null ) q .add (t .left );
55
+ if (t .right !=null ) q .add (t .right );
56
+ }
57
+ }
58
+
59
+ System .out .print ("[" ); for (var x : result ) {
60
+ System .out .print ("[" ); for (var y : x ) {
61
+ if (y ==null ) { System .out .print ("NULL," ); continue ; }
62
+ System .out .print (y +"," );
63
+ } System .out .print ("\b ]," );
64
+ } System .out .println ("\b ]" );
65
+ }
66
+
67
+
68
+ // SOLUTION
69
+ public boolean isSameTree (TreeNode p , TreeNode q ) {
70
+ if (p == null && q == null ) return true ;
71
+ if (p == null || q == null ) return false ;
72
+ if (p .val != q .val ) return false ;
73
+ return isSameTree (p .left , q .left ) && isSameTree (p .right , q .right );
74
+ }
75
+
76
+
77
+ public static void main (String [] args ) {
78
+ Solution o = new Solution ();
79
+ Tree p = new Tree ();
80
+ Tree q = new Tree ();
81
+
82
+ // INPUT
83
+ Integer [] pn = {1 ,2 ,3 };
84
+ createTree (p , pn );
85
+ Integer [] qn = {1 ,2 ,3 };
86
+ createTree (q , qn );
87
+
88
+ // OUTPUT
89
+ var result = o .isSameTree (p .root , q .root );
90
+ System .out .println (result );
91
+ }
92
+ }
0 commit comments