Skip to content

Commit 04c02d7

Browse files
committed
Feat: 100. Same Tree
1 parent edca7a0 commit 04c02d7

File tree

1 file changed

+41
-0
lines changed

1 file changed

+41
-0
lines changed

same-tree/HC-kang.ts

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
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+
}

0 commit comments

Comments
 (0)