七七老师の白日梦
首页项目归档照片墙音乐灵境说说杂谈友链关于
封面

二叉树的右视图:层序遍历的最右边节点

写作时间:2026-08-04 08:33:53

给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。

思考

这道题应该怎么做?把二叉树变成三维的了,好厉害,变成每次找最右边的节点,可不可以需求深度然后找最右边呢?可以的,但是我们之前写了层序遍历,我们可以利用层序遍历来实现

代码


‍

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;

class Solution {
    public List<Integer> rightSideView(TreeNode root) {
        /*
        * 层序遍历,每层只保留最右边的节点
        * 使用queue存储节点
        * */
        List<Integer> result = new ArrayList<>();
        if (root == null) {
            return result;
        }
//创建队列
        Queue<TreeNode> queue = new LinkedList<>();
        queue.offer(root);
//非空循环
        while (!queue.isEmpty()) {
//            获取当前层的节点数
            int levelSize = queue.size();
//遍历当前层的节点
            for (int i = 0; i < levelSize; i++) {
                TreeNode node = queue.poll();
//判断是否有左右子节点
                if (node.left != null) {
                    queue.offer(node.left);
                }
                if (node.right != null) {
                    queue.offer(node.right);
                }
//判断是否是最右边的节点
                if (i == levelSize - 1) {
                    result.add(node.val);
                }
            }
        }

        return result;
    }
}

‍

avatar

七七老师

分享代码日常

RECOMMENDED

七七旧事:复盘并改变写博客的方式

2026-07-02 22:54:38

字母异位词

2026-07-04 22:22:08

寻找两个正序数组的中位数:合并与二分

2026-07-08 15:56:26

Table of Contents