LeetCode 分类刷题:199. 二叉树的右视图

题目

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

解析

// 怎么递归找到每一层的最右节点?

// 从根节点开始,先遍历右子树的节点,再遍历左子树的节点

// 根节点 深度为0 右视图节点数为0 加入右视图

// 第一层最右节点 深度为1 右视图节点数为1 加入右视图

// ......

// 每一层的最右节点满足条件:所在层的深度 = 右视图节点数

答案

javascript 复制代码
var rightSideView = function(root) {
    const ans = [];
    function dfs(node, depth) {
        if (node === null) {
            return;
        }
        if (depth === ans.length) { // 这个深度首次遇到
            ans.push(node.val);
        }
        dfs(node.right, depth + 1); // 先递归右子树,保证首次遇到的一定是最右边的节点
        dfs(node.left, depth + 1);
    }
    dfs(root, 0);
    return ans;
};

// 作者:灵茶山艾府
// 链接:https://leetcode.cn/problems/binary-tree-right-side-view/solutions/2015061/ru-he-ling-huo-yun-yong-di-gui-lai-kan-s-r1nc/
// 来源:力扣(LeetCode)
// 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

复杂度分析

时间复杂度:O(n),其中 n 是二叉树的节点个数。

空间复杂度:O(h),其中 h 是二叉树的高度。递归需要 O(h) 的栈空间。最坏情况下,二叉树退化成一条链,递归需要 O(n) 的栈空间。

作者:灵茶山艾府

链接:https://leetcode.cn/problems/binary-tree-right-side-view/solutions/2015061/ru-he-ling-huo-yun-yong-di-gui-lai-kan-s-r1nc/

来源:力扣(LeetCode)

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

相关推荐
LYFlied2 小时前
【每日算法】LeetCode 46. 全排列
前端·算法·leetcode·面试·职场和发展
2301_823438022 小时前
【无标题】解析《采用非对称自玩实现强健多机器人群集的深度强化学习方法》
数据库·人工智能·算法
oscar9992 小时前
CSP-J教程——第二阶段第十二、十三课:排序与查找算法
数据结构·算法·排序算法
刘一说2 小时前
Vue Router:官方路由解决方案解析
前端·javascript·vue.js
chao1898442 小时前
MATLAB与HFSS联合仿真
算法
月明长歌2 小时前
【码道初阶】牛客TSINGK110:二叉树遍历(较难)如何根据“扩展先序遍历”构建二叉树?
java·数据结构·算法
jqrbcts2 小时前
关于发那科机器人视觉补偿报警设置
人工智能·算法
_Li.2 小时前
机器学习-线性判别函数
人工智能·算法·机器学习
蒲小英2 小时前
算法-栈与队列
算法