Skip to content

Commit 2b8bea1

Browse files
committed
Add problem 100 - Same Tree
1 parent d88e7a6 commit 2b8bea1

File tree

2 files changed

+60
-0
lines changed

2 files changed

+60
-0
lines changed

problems/tree/same_tree.py

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
from typing import Optional
2+
3+
from problems.util.tree_node import TreeNode
4+
5+
6+
class SameTree:
7+
def isSameTree(self, p: Optional[TreeNode], q: Optional[TreeNode]) -> bool:
8+
# Base cases
9+
if p is None and q is None:
10+
return True
11+
if p is None or q is None or p.val != q.val:
12+
return False
13+
return self.isSameTree(p.left, q.left) and self.isSameTree(p.right, q.right)

tests/tree/same_tree_test.py

+47
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
import unittest
2+
3+
from problems.tree.same_tree import SameTree
4+
from problems.util.tree_node import TreeNode
5+
6+
7+
class TestSameTree(unittest.TestCase):
8+
def test_isSameTree(self):
9+
same_tree = SameTree()
10+
11+
# Test case 1: Both trees are null
12+
self.assertTrue(same_tree.isSameTree(None, None))
13+
14+
# Test case 2: One tree is null
15+
p1 = TreeNode(1)
16+
self.assertFalse(same_tree.isSameTree(p1, None))
17+
self.assertFalse(same_tree.isSameTree(None, p1))
18+
19+
# Test case 3: Both trees have one node with the same value
20+
p2 = TreeNode(1)
21+
q2 = TreeNode(1)
22+
self.assertTrue(same_tree.isSameTree(p2, q2))
23+
24+
# Test case 4: Both trees have one node with different values
25+
p3 = TreeNode(1)
26+
q3 = TreeNode(2)
27+
self.assertFalse(same_tree.isSameTree(p3, q3))
28+
29+
# Test case 5: Both trees have multiple nodes with the same structure and values
30+
p4 = TreeNode(1)
31+
p4.left = TreeNode(2)
32+
p4.right = TreeNode(3)
33+
q4 = TreeNode(1)
34+
q4.left = TreeNode(2)
35+
q4.right = TreeNode(3)
36+
self.assertTrue(same_tree.isSameTree(p4, q4))
37+
38+
# Test case 6: Both trees have multiple nodes with different structures
39+
p5 = TreeNode(1)
40+
p5.left = TreeNode(2)
41+
q5 = TreeNode(1)
42+
q5.right = TreeNode(2)
43+
self.assertFalse(same_tree.isSameTree(p5, q5))
44+
45+
46+
if __name__ == '__main__':
47+
unittest.main()

0 commit comments

Comments
 (0)