给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。
示例:
输入: [1,2,3,null,5,null,4]
输出: [1, 3, 4]
思路:
先把二叉树的层序遍历搞定,然后把每一层最后一个加入到result里即可。
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution(object):
def rightSideView(self, root):
"""
:type root: TreeNode
:rtype: List[int]
"""
if not root:
return []
next_layer = [root]
result = [root.val]
while(next_layer):
temp_next_layer = []
for node in next_layer:
if not node:
continue
if node.left:
temp_next_layer.append(node.left)
if node.right:
temp_next_layer.append(node.right)
# print temp_next_layer[0].val
if temp_next_layer:
next_layer = temp_next_layer
result.append(temp_next_layer[-1].val)
# print result
else:
break
return result