这题的意思就是人站在一棵二叉树右边
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
速度比较慢...