물음표 살인마의 개발블로그

알고리즘 문제/Leetcode

872. Leaf-Similar Trees

BEstyle 2023. 1. 21. 03:14

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].

#https://leetcode.com/problems/leaf-similar-trees/description/

'''
1. 아이디어 :
    1) dfs로 풀기.
2. 시간복잡도 :
    1) O(n)
3. 자료구조 :
    1) dfs
'''


# 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(node,nums):
            if node:
                if node.left==None and node.right==None:
                    nums.append(node.val)
                if node.left:
                    dfs(node.left,nums)
                if node.right:
                    dfs(node.right, nums)
            return nums

        return dfs(root1,[]) == dfs(root2,[])

'알고리즘 문제 > Leetcode' 카테고리의 다른 글

543. Diameter of Binary Tree  (0) 2023.01.21
101. Symmetric Tree  (0) 2023.01.21
938. Range Sum of BST  (0) 2023.01.21
382. Linked List Random Node  (0) 2023.01.20
83. Remove Duplicates from Sorted List  (0) 2023.01.20