二叉树右视图

二叉树右视图(leetcode 199)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class TreeNode:
def __init__(self,x):
self.val = x
self.left = None
self.right = None

class Solution:
def rightDideView(self, root: TreeNode) -> List[int]:
d = {}
def f(r,i):
if r:
d[i] = r.val
f(r.left, i+1)
f(r.right, i+1)
f(root,0)
return [*d.values()]

思路:

1
先序遍历,注意rightSideView(r->left, i+1)与rightSideView(r-right, i+1)中的i相同,由此可以知道,字典中存储的数据一定是每层的最后一个数据