二叉树右视图199

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

1
2
3
4
5
6
7
8
9
输入: [1,2,3,null,5,null,4]
输出: [1, 3, 4]
解释:

1 <---
/
2 3 <---

5 4 <---

思路:在二叉树层序遍历时记录层数信息,最后只输出每层的最后一个值

代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
class :
def __init__(self, x):
self.val = x
self.left = None
self.right = None

class Solution:
def helper(self,node, level, res):
if node:
if len(res)<level+1:
res.append([])
res[level].append(node.val)
self.helper(node.left, level + 1, res)
self.helper(node.right,level+1,res)

def rightSideView(self, root):
"""
:type root: TreeNode
:rtype: List[int]
"""
res = []
self.helper(root, 0, res)
ans = []

for i in res:
ans.append(i[-1])
return ans
# 例子
tree = TreeNode(3)
left_tree = TreeNode(9)
right_tree = TreeNode(20)
right_tree.left = TreeNode(15)
right_tree.right = TreeNode(7)
tree.left = left_tree
tree.right = right_tree
print(Solution().rightSideView(tree))