给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。
示例:
输入: [1,2,3,null,5,null,4]
输出: [1, 3, 4]
解释:
1 <—
/ \
2 3 <—
\ \
5 4 <—
思路:
本题目的是找每层的最有个节点
所以采用宽度优先遍历的到每层的队列
将最后一个元素加入队列
代码:
class Solution:
def rightSideView(self, root: TreeNode) -> List[int]:
dt=[]
'''可以前后插入删除的列表'''
q=deque()
if root:
q.append(root)
'''BFS,直到队列为空'''
while(q):
size=len(q)
'''将每层最后元素插入'''
dt.append(q[-1].val)
'''每次入队一层'''
for i in range(size):
r=q.popleft()
if r.left:
q.append(r.left)
if r.right:
q.append(r.right)
return dt