题目:
给定一个二叉树的 根节点
root
,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。来源:力扣(LeetCode)
链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台
示例:
示例 1:
输入:[1,2,3,null,5,null,4]
输出:[1,3,4]
示例 2:输入:[1,null,3]
输出:[1,3]
示例 3:输入:[]
输出:[]
解法:
层次遍历,返回每层最后一个元素。
代码:
from collections import defaultdict # Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, right=None): # self.val = val # self.left = left # self.right = right class Solution: def rightSideView(self, root: Optional[TreeNode]) -> List[int]: queue = [(0, root)] d = defaultdict(list) while queue: level, cur = queue.pop(0) if cur: d[level].append(cur.val) queue.append((level + 1, cur.left)) queue.append((level + 1, cur.right)) return [level[-1] for level in d.values()]