Skip to content

Commit

Permalink
feature: leaf similar trees dfs recursive solution
Browse files Browse the repository at this point in the history
  • Loading branch information
solairerove committed Jan 9, 2024
1 parent 881fd15 commit a74871d
Show file tree
Hide file tree
Showing 2 changed files with 81 additions and 0 deletions.
17 changes: 17 additions & 0 deletions trees/LeafSimilarTrees.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
from typing import Optional

from trees.TreeNode import TreeNode


# O(n) time || O(h) space
def leaf_similar(self, root1: Optional[TreeNode], root2: Optional[TreeNode]) -> bool:
def dfs(node: TreeNode):
if not node:
return []

if not node.left and not node.right:
return [node.val]

return dfs(node.left) + dfs(node.right)

return dfs(root1) == dfs(root2)
64 changes: 64 additions & 0 deletions trees/test/test_leaf_similar.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
import unittest

from trees.LeafSimilarTrees import leaf_similar
from trees.TreeNode import TreeNode


class MyTestCase(unittest.TestCase):
def test_leaf_similar(self):
root1 = TreeNode(
val=3,
left=TreeNode(
val=5,
left=TreeNode(val=6),
right=TreeNode(
val=2,
left=TreeNode(val=7),
right=TreeNode(val=4)
)
),
right=TreeNode(
val=1,
left=TreeNode(val=9),
right=TreeNode(val=8)
)
)

root2 = TreeNode(
val=3,
left=TreeNode(
val=5,
left=TreeNode(val=6),
right=TreeNode(val=7)
),
right=TreeNode(
val=1,
left=TreeNode(val=4),
right=TreeNode(
val=2,
left=TreeNode(val=9),
right=TreeNode(val=8)
)
)
)

self.assertEqual(True, leaf_similar(self, root1, root2))

def test_leaf_similar_1(self):
root1 = TreeNode(
val=1,
left=TreeNode(val=2),
right=TreeNode(val=3)
)

root2 = TreeNode(
val=1,
left=TreeNode(val=3),
right=TreeNode(val=2)
)

self.assertEqual(False, leaf_similar(self, root1, root2))


if __name__ == '__main__':
unittest.main()

0 comments on commit a74871d

Please sign in to comment.