题目:给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。
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))
|
近期评论