199. 二叉树的右视图

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

方法二:使用深度优先遍历,在搜索过程中,我们总是先访问右子树。存储在每个深度访问的第一个结点。

你可能感兴趣的:(199. 二叉树的右视图)