199. 二叉树的右视图

Posted Debroon

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了199. 二叉树的右视图相关的知识,希望对你有一定的参考价值。

199. 二叉树的右视图

 


题目

传送门:https://leetcode.cn/problems/binary-tree-right-side-view/


 


算法设计:深度优先搜索

一开始我以为只需要获取根节点、所有右节点即可,那就只需要右序遍历。


从右边看到的第一个节点,如上图的 8,代表如果没有右节点,左节点也算,所以左子树也需要遍历。

问题是,1、3、6、8、9、10 有什么规律呢?

  • 遍历顺序:因为是从右边看,先遍历右子树,再遍历左子树
  • 每层的最右边节点:当前层数,遍历到的第一个节点。即当前递归层数 = 当前层第一个节点。
class Solution 
    int n = 0;
public:
    void dfs( TreeNode *root, vector<int>& v ) 
        if( root == NULL ) return;
        if( n == v.size() ) 
        	v.push_back(root->val);  			 // 把从右侧看到的第一个节点,添加到列表
        n ++;                                    
        dfs(root->right, v);                     // 先遍历右子树
        dfs(root->left, v);                      // 再遍历左子树
        n --;
    

    vector<int> rightSideView(TreeNode *root) 
        if( root == NULL ) return ;
        vector<int> v;
        dfs(root, v);
        return v;
    
;

以上是关于199. 二叉树的右视图的主要内容,如果未能解决你的问题,请参考以下文章

199. 二叉树的右视图

广度优先搜索199.二叉树的右视图

199. 二叉树的右视图-字节跳动高频题

精选力扣500题 第19题 LeetCode 199. 二叉树的右视图c++详细题解

leetcode 199 二叉树的右视图

199. 二叉树的右视图