此题较简单,因为子问题比较好找。 题目的意思想要找到最右侧的所有节点的值。可以想到子问题就对应着左右子树,关键是合并的时候要怎么做。首先root节点的值肯定是放在第一个的,其次假设左右子节点对应的链表都知道了,因为要找最右边的,所以右子树的值在一个个放进去,因为相比于左子树,肯定右子树的最右边值在最右边。当右子树放完后,看看左子树更深的地方还有没有值,如果有再加进去。
# 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]
"""
result = []
if root == None:
return result
result.append(root.val)
left_value = self.rightSideView(root.left)
right_value = self.rightSideView(root.right)
for i in range(len(right_value)):
result.append(right_value[i])
for j in range(len(left_value)):
if j < len(right_value):
continue
result.append(left_value[j])
return result