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