File tree Expand file tree Collapse file tree 1 file changed +41
-0
lines changed Expand file tree Collapse file tree 1 file changed +41
-0
lines changed Original file line number Diff line number Diff line change
1
+ class TreeNode {
2
+ val : number ;
3
+ left : TreeNode | null ;
4
+ right : TreeNode | null ;
5
+ constructor ( val ?: number , left ?: TreeNode | null , right ?: TreeNode | null ) {
6
+ this . val = val === undefined ? 0 : val ;
7
+ this . left = left === undefined ? null : left ;
8
+ this . right = right === undefined ? null : right ;
9
+ }
10
+ }
11
+
12
+ /**
13
+ * https://leetcode.com/problems/same-tree/description/
14
+ * T.C. O(n)
15
+ * S.C. O(n)
16
+ */
17
+ function isSameTree ( p : TreeNode | null , q : TreeNode | null ) : boolean {
18
+ if ( p === null && q === null ) return true ;
19
+ if ( p === null || q === null ) return false ;
20
+ if ( p . val !== q . val ) return false ;
21
+ return isSameTree ( p . left , q . left ) && isSameTree ( p . right , q . right ) ;
22
+ }
23
+
24
+ /**
25
+ * T.C. O(n)
26
+ * S.C. O(n)
27
+ */
28
+ function isSameTree ( p : TreeNode | null , q : TreeNode | null ) : boolean {
29
+ const stack : [ TreeNode | null , TreeNode | null ] [ ] = [ [ p , q ] ] ;
30
+
31
+ while ( stack . length ) {
32
+ const [ node1 , node2 ] = stack . pop ( ) ! ;
33
+ if ( node1 === null && node2 === null ) continue ;
34
+ if ( node1 === null || node2 === null ) return false ;
35
+ if ( node1 . val !== node2 . val ) return false ;
36
+ stack . push ( [ node1 . left , node2 . left ] ) ;
37
+ stack . push ( [ node1 . right , node2 . right ] ) ;
38
+ }
39
+
40
+ return true ;
41
+ }
You can’t perform that action at this time.
0 commit comments