要求
给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。
示例 1:
输入: [1,2,3,null,5,null,4]
输出: [1,3,4]
示例 2:
输入: [1,null,3]
输出: [1,3]
示例 3:
输入: []
输出: []
核心代码
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
class Solution:
def rightSideView(self, root: TreeNode) -> List[int]:
if not root:
return []
next_layer = [root]
result = [root.val]
while next_layer:
new_next_layer = []
for node in next_layer:
if not node:
continue
if node.left:
new_next_layer.append(node.left)
if node.right:
new_next_layer.append(node.right)
if new_next_layer:
next_layer = new_next_layer
result.append(new_next_layer[-1].val)
else:
break
return result
解题思路:还是树的层次遍历,我们可以得到每一层的所有数据,在一层数据的最右侧就是右视图能看到的数字,遍历每一层,得到每一层的最后一个数字,就是我们要的右视图。