给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。
示例:
输入: [1,2,3,null,5,null,4]
输出: [1, 3, 4]
解释:
1 <---
/ \
2 3 <---
\ \
5 4 <---
思路
从上至下一层一层遍历二叉树,每层从左至右遍历当前层所有节点,将每个节点的子节点储存起来作为下一层要遍历的节点,将当前层的最后一个节点的值添加至最终结果,直到所有层遍历完毕
代码
def rightSideView(self, root):
if root==None:return []
l=[]
e=[root]
while e!=[]:
p=[]
l.append(e[-1].val)
for i in e:
if i.left:p.append(i.left)
if i.right:p.append(i.right)
e=p
return l