[LeetCode] 199. Binary Tree Right Side View

来源:互联网 发布:中英联合声明失效 知乎 编辑:程序博客网 时间:2024/05/17 04:32

这题的意思就是人站在一棵二叉树右边

   1            <--- /   \2     3         <--- \     \  5     4       <---
先是自己瞎想提交了好几次都不对,然后网上看了看,很多人都是用的一层一层地遍历然后存入最右边的node.val

我的方法是类似遍历前序二叉树,每一层的深度通过deep记录下来然后更新cache


class Solution(object):        def rightSideView(self, root):        """        :type root: TreeNode        :rtype: List[int]        """        if not root:            return []        self.cache = []        self.deep = 1        self.Read(root)        return self.cache            def Read(self,node):        if self.deep > len(self.cache):            self.cache.append(node.val)        else :            self.cache[self.deep - 1] = node.val                    if  node.left is not None:            self.deep += 1            self.Read(node.left)        if  node.right is not None:            if node.left is None:                self.deep += 1            self.Read(node.right)        if node.left is None and node.right is None:            self.deep += 1        self.deep -= 1

速度比较慢...

0 0