Leetcode 257.두 갈래 나무의 모든 경로

1380 단어
Time: 2019-08-12

제목 설명


두 갈래 나무를 정해서 뿌리 노드에서 잎 노드까지의 모든 경로를 되돌려줍니다.
설명: 잎 노드는 하위 노드가 없는 노드를 가리킨다.
예:
입력:
1/ 2 3 5
출력: ["1->2->5", "1->3"]
설명: 모든 뿌리 노드에서 잎 노드까지의 경로: 1->2->5, 1->3
출처: 리코드(LeetCode) 링크:https://leetcode-cn.com/problems/binary-tree-paths저작권은 인터넷 소유에 귀속된다.상업 전재는 정부에 연락하여 권한을 부여하고, 비상업 전재는 출처를 명시해 주십시오.

생각


분치법 + 귀속으로 해답을 구하고 본 문제의 귀속 출구는 잎결점을 포함하고 있음을 주의하십시오.

코드

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None
class Solution:
    # 1. : root 
    def binaryTreePaths(self, root: TreeNode) -> List[str]:
        paths = []
        # 3. 
        if root == None:
            return paths
        
        #  
        if root.left == None and root.right == None:
            paths.append(str(root.val))
            return paths
        
        # 2. 
        leftPaths = self.binaryTreePaths(root.left)
        rightPaths = self.binaryTreePaths(root.right)
        
        #  
        for path in leftPaths:
            paths.append(str(root.val) + '->' + path)
        for path in rightPaths:
            paths.append(str(root.val) + '->' + path)
        
        return paths

END.

좋은 웹페이지 즐겨찾기