199. 二叉树的右视图

方法有很多

1,递归求二叉树的深度,然后从右边看是先遍历,也就是右序遍历一个颗二叉树,到最深度,然后到左边去遍历,从右边树+1的深度开始,加入数组。

2,层序遍历一颗二叉树,每层打印一个换行符,注意标记号每层最后一个节点。用一个队列实现,用一个哨兵来标记最后的每层最后的一个节点。

难度中等

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

示例:

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

   1            <---
 /   \
2     3         <---
 \     \
  5     4       <---

代码如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    vector<int> rightSideView(TreeNode* root) {
        vector<int>res;
        if (NULL == root) return res;
        queue<TreeNode*> que;
        que.push(root);
        auto last = root;
        auto nlast = root;
        while (!que.empty()){
            auto q = que.front();
            que.pop();
            if(q->left){
                que.push(q->left);
                nlast=que.back();
            }          
            if(q->right){
                que.push(q->right);
                nlast=que.back();
            }
            if(q == last ){
                res.push_back(q->val);
                last=nlast;
            }
        }
        return res;
    }
};

  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    void solve(TreeNode*p,int high,vector<int>& num)
    {
        if(p == NULL)
            return ;
 
        if(high > num.size())
        {
            num.push_back(p->val);
        }
        solve(p->right,high+1,num);
        solve(p->left,high+1,num);
 
    }
    vector<int> rightSideView(TreeNode* root) {
        vector<int> num;
        solve(root,1,num);
        return num;
    }
};
 
作者:Nagi_Deng
链接:https://leetcode-cn.com/problems/binary-tree-right-side-view/solution/si-lu-qing-xi-jie-fa-jian-dan-csuan-fa-by-nagi_den/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  

posted @   zzas12345  阅读(193)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示