[Python] 바이너리 트리의 수직 순회

항해:

소유 : https://sleepymonster.cn/
창고 : https://github.com/hengyi666

암호:

class TreeNode:
    def __init__(self, val=0, left=None, right=None):
        self.val = val
        self.left = left
        self.right = right

class Solution:
    def verticalTraversal(self, root: TreeNode):
        self.res = []
        def dfs(root, row, col):
            if not root:
                return
            else:
                self.res.append([root.val, row, col])
                dfs(root.left, row+1, col-1)
                dfs(root.right, row+1, col+1)
        dfs(root, 0, 0)
        self.res.sort(key=lambda x: (x[2], x[1], x[0]))
        resAll = [[self.res[0][0]]]
        for i in range(1, len(self.res)):
            if self.res[i][2] == self.res[i - 1][2]:
                resAll[-1].append(self.res[i][0])
            else:
                resAll.append([self.res[i][0]])
        return resAll

if __name__ == "__main__":
    root = TreeNode(1)
    n2 = TreeNode(2)
    n3 = TreeNode(3)
    n4 = TreeNode(4)
    n5 = TreeNode(5)
    root.left = n2
    root.right = n3
    n2.left = n4
    n2.right = n5
    print(Solution().verticalTraversal(root))

마지막 문장 :

함께 진행하세요. 도움이된다면 QAQ를 좋아하세요.

추천

출처blog.csdn.net/weixin_51485807/article/details/115281308