二叉树的右视图-二叉树

199. 二叉树的右视图 - 力扣(LeetCode)

层序遍历,广度优先

queue先进后出,每层从左往右进树,最后一个就是最右边的数;pop掉这层的。push下一层;

cpp 复制代码
class Solution {
public:
    vector<int> rightSideView(TreeNode* root) {
        if(root==nullptr)
            return vector<int>();

        vector<int>  rtnum;
        queue<TreeNode*> nodetree;

        nodetree.push(root);
        while(!nodetree.empty())
        {
            int size = nodetree.size();
            TreeNode* tmp;

            for(int i = 0; i < size; i++)
            {
                tmp = nodetree.front();
                nodetree.pop();
                if(tmp->left)
                    nodetree.push(tmp->left);
                if(tmp->right){nodetree.push(tmp->right);}
            }
            rtnum.push_back(tmp->val);
        }
        return rtnum;

    }
};

递归

遍历顺序改为根、右子树、左子树;

这样往下遍历,到达新一层的第一个节点就是右子树;

就是到达新的深度的第一个就是最右边的;

cpp 复制代码
class Solution {
    vector<int> ans;

    void dfs(TreeNode* node, int depth) {
        if (node == nullptr) {
            return;
        }
        if (depth == ans.size()) { // 这个深度首次遇到
            ans.push_back(node->val);
        }
        dfs(node->right, depth + 1); // 先递归右子树,保证首次遇到的一定是最右边的节点
        dfs(node->left, depth + 1);
    }

public:
    vector<int> rightSideView(TreeNode* root) {
        dfs(root, 0);
        return ans;
    }
};
相关推荐
ZPC82102 分钟前
CPU 核心隔离 + 线程绑核 + 实时优先级 SCHED_FIFO
人工智能·算法·计算机视觉·机器人
andafaAPS15 分钟前
安达发|aps自动排产排程排单软件:日化生产高效运转“数字魔法”
大数据·人工智能·算法·aps软件·安达发aps·aps自动排产排程排单软件
黎阳之光25 分钟前
全域实景立体管控:数字孪生与视频孪生技术体系白皮书
大数据·人工智能·算法·安全·数字孪生
88号技师1 小时前
2026年4月一区SCI-狒狒优化算法Baboon optimization algorithm-附Matlab免费代码
开发语言·算法·数学建模·matlab·优化算法
凯瑟琳.奥古斯特1 小时前
BFS解力扣1654最短跳跃次数
数据结构·算法·广度优先
sg_knight1 小时前
第一次用 OpenClaw,我让它 3 分钟写了个小工具
算法·llm·agent·ai编程·openclaw
m0_629494731 小时前
LeetCode 热题 100-----23.反转链表
数据结构·算法·leetcode·链表
炸膛坦客2 小时前
嵌入式 - 数据结构与算法:(1-10)排序算法 - 冒泡排序(Bubble Sort)
算法·排序算法
Hello eveybody2 小时前
介绍一下动态树LCT(Python)
开发语言·python·算法
不穿铠甲的穿山甲2 小时前
MMR最大边际相关性
算法