力扣面试150题--二叉树的右视图

Day 53

题目描述

思路

采取层序遍历,利用一个high的队列来保存每个节点的高度,highb和y记录上一个节点的高度和节点,在队列中,如果队列中顶部元素的高度大于上一个节点的高度,说明上一个节点就是上一层中最右边的元素,加入数组即可,同时最后需要处理最后一个元素,因为最后一个元素没有能比较的了,需要手动加入数组。

java 复制代码
/**
 * 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<Integer>();
        if(root==null){
            return list;
        }
        Queue<TreeNode> stack=new LinkedList<>();
        Queue<Integer> high=new LinkedList<>();
        stack.offer(root);
        high.offer(0);
        TreeNode x=root;
        TreeNode y=root;
        int highb=0;
        while(!stack.isEmpty()){
            if(high.peek()>highb){
                list.add(y.val);
            }
            y=stack.peek();
            highb=high.peek();
            x=stack.poll();
            high.poll();
            if(x.left!=null){
                stack.offer(x.left);
                high.offer(highb+1);
            }
            if(x.right!=null){
                stack.offer(x.right);
                high.offer(highb+1);
            }
        }
        list.add(x.val);
        return list;
    }
}
相关推荐
初夏睡觉1 小时前
原创题目 - 空壳恋爱
c++·算法·dp·oi·信息学·原创题目·值得挑战的题目
swipe1 小时前
RabbitMQ 实战:AI Agent 里异步处理的标配方案(手把手 + 4 种交换机全解析)
后端·面试·langchain
Buke..1 小时前
【APP 逆向】哔哩哔哩 sign 参数逆向(下):OLLVM 混淆还原 sign 算法
java·javascript·爬虫·python·算法
闲研随记2 小时前
【文献阅读 ICLR 2026】RL算法:DECS
算法·llm·强化学习·iclr·rl
量化小c2 小时前
一行代码查 BTCUSDT 和 AAPL 最新价?QuantDash 统一多市场实时行情接口实战
后端·算法·github
机器人梦想家2 小时前
具身机器人视觉服务的异步回调与并发控制
数据库·算法·机器人
我命由我123453 小时前
人脸识别 - 人脸识别选帧
java·人工智能·python·算法·安全·java-ee·人脸识别
时针滴滴答啊3 小时前
最大子数组和
算法·leetcode·职场和发展
五月底_4 小时前
LIS算法
python·算法·最长子序列
Yfhonier4 小时前
【素数定理】素数个数的位数
c++·算法·素数