二叉树的右视图 python_199年。二叉树python问题解的右视图

题目说明

给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。

示例:

输入: [1,2,3,null,5,null,4]

输出: [1, 3, 4]

解释:

1            

/   \

2     3        

\     \

5     4      

解题思路

题目的要求其实就是

返回每一层的最后一个节点值

,可以利用BFS,下面是从

LotusPanda

那copy过来的BFS步骤。

总结一下 BFS 的几个主要步骤

肯定会用到

deque

的结构用来

模拟队列

BFS精髓

也在这里。

队列里肯定是有一个

初始点

然后每次处理从队列中出队一个元素

对元素进行

扩张

(具体如何扩张需要根据题目要求)

对于扩张后满足某条件的点再进行处理,根据需要进入队列,进入队列的点就是扩到下一层的点(不同题目需要处理的方法不同,大家灵活运用)

然后接着循环处理 deque 中的元素,直到 deque 为空,则代表所有点都已经完成扩张

最后根据题目要求输出结果(当然这已经不属于 BFS 模板的范围了)

解题代码

# Definition for a binary tree node.

# class TreeNode:

# def __init__(self, x):

# self.val = x

# self.left = None

# self.right = None

from collections import deque

class Solution:

def rightSideView(self, root: TreeNode) -> List[int]:

if not root:

return []

res = []

layer = deque()

layer.append(root)

while layer:

for _ in range(len(layer)):

node = layer.popleft()

if node.left:

layer.append(node.left)

if node.right:

layer.append(node.right)

res.append(node.val)

return res

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