已解答
中等
相关标签
相关企业
给定一个二叉树的 根节点 root
,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution(object):
# def getList(self,root):
# if root == None:
# return []
# elif root.left == None and root.right == None:
# return [root.val]
# else:
# left = self.getList(root.left)
# right = self.getList(root.right)
# if left == [] :
# return [root.val]+right
# if right == []:
# return [root.val]+left
# if len(left)<len(right):
# return [root.val]+right
# else:
# left[:len(right)]=right
# return [root.val]+left
def dfs(self,root,height):
if root==None:
return []
else:
if len(self.ans)<height:
self.ans.append(root.val)
self.dfs(root.right,height+1)
self.dfs(root.left,height+1)
def rightSideView(self, root):
"""
:type root: Optional[TreeNode]
:rtype: List[int]
"""
# return self.getList(root)
# 应该用深度优先搜索,你想想那个图就知道了只要每次记录depth即可
self.ans=[]
self.dfs(root,1)
return self.ans
这个利用到dfs,考虑dfs的遍历顺序,其实加上height就可以了