199. 二叉树的右视图
LeetCode 1991 · 中等 · 二叉树
题
站在二叉树右侧往左看,从上到下返回每层能看到的节点值——也就是每层最右边的那个。
例:root = [1, 2, 3, null, 5, null, 4] → [1, 3, 4]。
一句话
右视图 = 每层最右的节点;BFS 分层取每层最后一个,或 DFS 先走右子树、每个深度第一次到达时记下。
关键技巧
坑:不是「一路往右走」。 右子树比左子树矮时,更深的层只有左边有节点,它也能被看到。例 [1, 2, 3, 4]:答案 [1, 3, 4],4 在左子树里。
BFS: 套 102 的分层模板,每层弹到最后一个时记录。
DFS:先右后左的前序,深度首次出现即答案。 前序「根 → 右 → 左」保证同一深度里最右的节点最先被访问。用 len(res) == depth 判断「这个深度第一次到达」——res 的长度恰好是已经见过的最大深度 + 1,不需要额外的集合。
解
时间 \(O(n)\);空间 DFS \(O(h)\),BFS \(O(w)\)。
延伸
- 左视图:DFS 改成先左后右,BFS 改取
q[0]。 - 分层模板的其他用法见 102. 二叉树的层序遍历、104. 二叉树的最大深度。
自测
-
LeetCode 199,2026-09-29 读。 ↩