您的位置:首页 > 其它

[LeetCode] 199. Binary Tree Right Side View

2016-04-01 11:29 260 查看
这题的意思就是人站在一棵二叉树右边

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

速度比较慢...
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: