199. 二叉树的右视图
方法一:层序遍历,每遍历完一层,将本层最右边的节点的value保存下来。注意这里如何使用队列deque:
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
# 注意这里如何导入deque
from collections import deque
class Solution:
def rightSideView(self, root: TreeNode) -> List[int]:
if root==None:
return []
# 注意这里如何初始化一个队列
layer = deque([root])
ans = []
while layer:
ans.append(layer[-1].val)
layerlen = len(layer)
for _ in range(layerlen):
# 注意这里,队列如何弹出一个元素
node = layer.popleft()
if node.left:
# 注意这里,队列如何在末尾添加一个元素
layer.append(node.left)
if node.right:
layer.append(node.right)
return ans
方法二:使用深度优先遍历,在搜索过程中,我们总是先访问右子树。存储在每个深度访问的第一个结点。