leetcode做题笔记199. 二叉树的右视图

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

示例 1:

复制代码
输入: [1,2,3,null,5,null,4]
输出: [1,3,4]

示例 2:

复制代码
输入: [1,null,3]
输出: [1,3]

示例 3:

复制代码
输入: []
输出: []

思路一:递归

c++解法

cpp 复制代码
class Solution {
public:
    vector<int> rightSideView(TreeNode* root) {
        int depth=0;
        int h=0;
        vector<int> res;
        rightView(root,depth,0,res);
        return res;
    }
    void rightView(TreeNode* node,int& depth,int h,vector<int>& res)
    {
        if(node==nullptr) return;
            h++;
        if(h>depth)
            {
                res.push_back(node->val);
                depth++;
            }
        if(node->right)
            rightView(node->right,depth,h,res);
        if(node->left)
            rightView(node->left,depth,h,res);
        h--;
    }
};

分析:

本题要输出二叉树的右视图,可利用递归的方法,将最右边的子树不断放入栈中,最后输出,每放入一次深度加一,得到即为所求答案

总结:

本题考察递归在二叉树上的应用,利用递归调用上一遍历的子树将所要求的数放入栈中,最后输出答案

相关推荐
CV爱数码4 分钟前
CT 重建从零开始(五):ASTRA Toolbox 上手——几何、投影器与算法
图像处理·算法·计算机视觉·ct
Rabitebla32 分钟前
【系统性学习笔记】Linux 权限篇(二):文件属性、权限修改与目录权限的底层逻辑
linux·c++·笔记·学习·算法
远离UE443 分钟前
半拉格朗日学习笔记 动力学 实时渲染
人工智能·算法
小郎君6581 小时前
MPTT 不是万能编号:一棵百万节点树的增删改与批量事务
算法
FPGA小徐1 小时前
【一生一芯 / PA】AM 核心文件逐行解析(上):从 start.S 到 gpu.c
前端·算法
深圳老胡1 小时前
STM32CubeMX 2 与 STM32CubeMX 的主要区别
笔记·stm32·单片机·代码规范
Tairitsu_H2 小时前
[动态规划#1] 子数组 | 最大子数组和 | 环形子数组的最大和 | 乘积最大子数组 | 乘积为正数的最长子数组
算法·动态规划
叼烟扛炮2 小时前
Linux 学习笔记(十三):高效排错利器——GDB 调试器入门
linux·笔记·学习
凯瑟琳.奥古斯特2 小时前
动态调优IoU提升OCR文本合并精度
开发语言·python·算法
布莱克6053 小时前
A* 算法详解:从原理到实现
开发语言·c++·算法