【亡羊补牢】挑战数据结构与算法 第49期 LeetCode 199. 二叉树的右视图(二叉树)
发布日期:2021-06-29 14:34:26 浏览次数:3 分类:技术文章

本文共 1670 字,大约阅读时间需要 5 分钟。

仰望星空的人,不应该被嘲笑

题目描述

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

示例:

输入: [1,2,3,null,5,null,4]输出: [1, 3, 4]解释:   1            <--- /   \2     3         <--- \     \  5     4       <---

来源:力扣(LeetCode)

链接:https://leetcode-cn.com/problems/binary-tree-right-side-view
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解题思路

DFS,每一层只能取一个元素,那么我们搜的时候优先考虑右孩子即可。

参考 大佬图解

/** * Definition for a binary tree node. * function TreeNode(val) { *     this.val = val; *     this.left = this.right = null; * } *//** * @param {TreeNode} root * @return {number[]} */var rightSideView = function(root) {
if(!root) return []; let res = []; let dfs = (step,root) => {
if(res.length === step){
res.push(root.val); } // 优先遍历右孩子,再遍历左孩子 root.right && dfs(step+1,root.right); root.left && dfs(step+1,root.left); } dfs(0,root); return res;};

解法二

BFS,对于每一层取队列中对首元素,然后放入队列的时候,如果有对应左右孩子的话,优先放右孩子,再放左孩子。

/** * Definition for a binary tree node. * function TreeNode(val) { *     this.val = val; *     this.left = this.right = null; * } *//** * @param {TreeNode} root * @return {number[]} */var rightSideView = function (root) {
if (!root) return []; let queue = [root]; let res = []; while (queue.length) {
let size = queue.length; res.push(queue[0].val); while (size--) {
let node = queue.shift(); // 优先放右孩子 node.right && queue.push(node.right); node.left && queue.push(node.left); } } return res;};

最后

文章产出不易,还望各位小伙伴们支持一波!

往期精选:

小伙伴们可以在Issues中提交自己的解题代码,🤝 欢迎Contributing,可打卡刷题,Give a ⭐️ if this project helped you!

,方便小伙伴阅读玩耍~

学如逆水行舟,不进则退

转载地址:https://chocolate.blog.csdn.net/article/details/108796614 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:【亡羊补牢】挑战数据结构与算法 第50期 LeetCode 144. 二叉树的前序遍历(二叉树)
下一篇:【亡羊补牢】挑战数据结构与算法 第48期 LeetCode 104. 二叉树的最大深度(二叉树)

发表评论

最新留言

关注你微信了!
[***.104.42.241]2024年04月18日 10时33分48秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

BAT大厂最爱问的Android核心面试百题详细解析!面试必问 2019-04-29
BAT大厂面试基础题集合,跳槽薪资翻倍 2019-04-29
BAT常见的20道Android面试题详解,终局之战 2019-04-29
BTAJ大厂最新面试题汇集,绝对干货 2019-04-29
BTAJ面试有关散列(哈希)表的面试题详解,含泪整理面经 2019-04-29
Context都没弄明白凭什么拿高薪?满满干货指导 2019-04-29
四年Android面试遇到的问题整理,吐血整理 2019-04-29
多亏这份《秋招+金九银十-腾讯面试题合集》跳槽薪资翻倍!年薪50W 2019-04-29
如何快速的开发一个完整的直播app,大厂面经合集 2019-04-29
计算机中的原码,反码,补码的理解总结 2019-04-29
Unicode, UTF-8, UTF-16, UTF-32, UCS-2, UCS-4是什么? 2019-04-29
彻底搞清楚有的编辑软件中存在的 ANSI 编码到底是什么? 2019-04-29
一文搞清楚中文编码们:GB2312, GBK, GB18030, Big5 2019-04-29
Java 入门之5:Java 运算符、及自动类型转换和强制类型转换 的总结 2019-04-29
Java 入门之2:JDK的历史版本发布时间及JDK11之前的历史版本的新特性整理 2019-04-29
面向对象之1:类和对象的关系、构造器、创建对象、this关键字、static关键字 的 总结: 2019-04-29
面向对象之3:面向对象三大特性之 封装 的总结: 2019-04-29
面向对象之4:(package关键字)包,(import关键字)导入,的总结: 2019-04-29
面向对象之5:面向对象三大特性之 继承 、super关键字 的总结: 2019-04-29
面向对象之6:继承后方法重写、权限修饰符(public、protected、缺省、private) 的总结: 2019-04-29