LeetCode 0872. Leaf-Similar Trees Solution in Java, C++, Python & More | Explanation + Code

CoderIndeed
0
0872. Leaf-Similar Trees

Description

Consider all the leaves of a binary tree, from left to right order, the values of those leaves form a leaf value sequence.

For example, in the given tree above, the leaf value sequence is (6, 7, 4, 9, 8).

Two binary trees are considered leaf-similar if their leaf value sequence is the same.

Return true if and only if the two given trees with head nodes root1 and root2 are leaf-similar.

 

Example 1:

Input: root1 = [3,5,1,6,2,9,8,null,null,7,4], root2 = [3,5,1,6,7,4,2,null,null,null,null,null,null,9,8]
Output: true

Example 2:

Input: root1 = [1,2,3], root2 = [1,3,2]
Output: false

 

Constraints:

  • The number of nodes in each tree will be in the range [1, 200].
  • Both of the given trees will have values in the range [0, 200].

Solutions

Solution 1: DFS

We can use Depth-First Search (DFS) to traverse the leaf nodes of the two trees, storing the values of the leaf nodes in two lists l1 and l2 respectively. Finally, we compare whether the two lists are equal.

Time complexity is O(n), and space complexity is O(n). Here, n is the number of nodes in the tree.

PythonJavaC++GoRustJavaScript
# Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, right=None): # self.val = val # self.left = left # self.right = right class Solution: def leafSimilar(self, root1: Optional[TreeNode], root2: Optional[TreeNode]) -> bool: def dfs(root: Optional[TreeNode], nums: List[int]) -> None: if root.left == root.right: nums.append(root.val) return if root.left: dfs(root.left, nums) if root.right: dfs(root.right, nums) l1, l2 = [], [] dfs(root1, l1) dfs(root2, l2) return l1 == l2(code-box)

Post a Comment

0Comments

Post a Comment (0)

#buttons=(Accept !) #days=(20)

Our website uses cookies to enhance your experience. Check Now
Accept !