[Python] Vertical traversal of binary tree

navigation:

Own: https://sleepymonster.cn/
Warehouse: https://github.com/hengyi666

Code:

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))

The last sentence:

Make progress together, if it helps, please like QAQ

Guess you like

Origin blog.csdn.net/weixin_51485807/article/details/115281308