LeetCode # 199. 二叉树的右视图

199. 二叉树的右视图

题目

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

示例 1:
在这里插入图片描述

输入: [1,2,3,null,5,null,4]
输出: [1,3,4]

示例 2:

输入: [1,null,3]
输出: [1,3]

示例 3:

输入: []
输出: []

分析

树的层序遍历,判断遍历到最右侧时,加入结果中

题解

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    public List<Integer> rightSideView(TreeNode root) {
        // 广度优先,层序遍历

        List<Integer> list = new ArrayList<>();
        // list.add(root.val);

        if(root == null){
            return list;
        }

        Queue<TreeNode> queue = new LinkedList<>();
        queue.add(root);

        

        // 不能用queue是否为空来判断这一层有没有遍历完,因为父节点的左子树下面有节点时,queue会被重新填充,等到父节点的右子树判断时已经不准确了,所以要在这一层遍历之前获取层的数量
        while(!queue.isEmpty()){

            Integer size = queue.size();

            for(int i = 0; i < size; i++){

                TreeNode node = queue.poll();

                if(node.left != null){
                    queue.add(node.left);
                }
                if(node.right != null){
                    queue.add(node.right);
                }
                // 利用size判断这层后面还有没有,没有就加入结果中
                if(i == size - 1){
                    list.add(node.val);
                }
            }
        }
        return list;
    }
}

相关推荐

  1. Leetcode 199视图

    2024-03-21 18:32:07       30 阅读
  2. LeetCode199.视图

    2024-03-21 18:32:07       25 阅读
  3. 199_视图

    2024-03-21 18:32:07       49 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-21 18:32:07       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-21 18:32:07       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-21 18:32:07       82 阅读
  4. Python语言-面向对象

    2024-03-21 18:32:07       91 阅读

热门阅读

  1. 第2章 团队

    2024-03-21 18:32:07       40 阅读
  2. c++ 模拟 三维数组输入 string转化为int

    2024-03-21 18:32:07       41 阅读
  3. 如何查看 MySQL 数据库中某张指定表的具体大小

    2024-03-21 18:32:07       44 阅读
  4. python之列表遍历

    2024-03-21 18:32:07       45 阅读
  5. leetcode-键盘行

    2024-03-21 18:32:07       49 阅读
  6. 【力扣】383.赎金信

    2024-03-21 18:32:07       33 阅读
  7. 月份选择,多选,数组去重

    2024-03-21 18:32:07       41 阅读