這題的意思就是人站在一棵二叉樹右邊
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
速度比較慢...