199_二叉树的右视图[MEDIUM]
约 292 字小于 1 分钟
2026-03-22
给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。
示例 1:
输入:root = [1,2,3,null,5,null,4]
输出:[1,3,4]
示例 2:
输入:root = [1,2,3,4,null,null,null,5]
输出:[1,3,4,5]
解题思路
右视图实际上就是二叉树的层序遍历,结果取每一层的最后一个数字。
参考 Leetcode 102 的解法,只取每一层的最后一个(levelSize - 1)作为结果集即可。
注意 levelSize 一定要在 for 循环外面,如果放在里面值会不断变化
Java实现
public List<Integer> rightSideView(TreeNode root) {
List<Integer> result = new ArrayList<>();
if (root == null){
return result;
}
Queue<TreeNode> queue = new LinkedList<>();
queue.add(root);
while (!queue.isEmpty()){
int levelSize = queue.size();
for (int i = 0; i < levelSize; i++){
TreeNode curr = queue.poll();
// 判断是不是这一层的最后一个
if (i == levelSize - 1){
result.add(curr.val);
}
if (curr.left != null){
queue.add(curr.left);
}
if (curr.right != null){
queue.add(curr.right);
}
}
}
return result;
}