【亡羊补牢】挑战数据结构与算法 第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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
关注你微信了!
[***.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
彻底搞清楚有的编辑软件中存在的 ANSI 编码到底是什么?
2019-04-29
一文搞清楚中文编码们:GB2312, GBK, GB18030, Big5
2019-04-29
Java 入门之5:Java 运算符、及自动类型转换和强制类型转换 的总结
2019-04-29
Java 入门之2:JDK的历史版本发布时间及JDK11之前的历史版本的新特性整理
2019-04-29
面向对象之3:面向对象三大特性之 封装 的总结:
2019-04-29
面向对象之4:(package关键字)包,(import关键字)导入,的总结:
2019-04-29
面向对象之5:面向对象三大特性之 继承 、super关键字 的总结:
2019-04-29