给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。
示例 :
输入: [1,2,3,null,5,null,4]
输出: [1, 3, 4]
解释:
1 <---
/ \
2 3 <---
\ \
5 4 <---
典型二叉树的遍历问题,可以使用递归深度优先搜索实现,转自 LeetCode
/**
* 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 arr = []
dfs(root, 0, arr)
return arr
};
function dfs (root, step, res) {
if(root){
if(res.length === step){
res.push(root.val) // 当数组长度等于当前 深度 时, 把当前的值加入数组
}
dfs(root.right, step + 1, res) // 先从右边开始, 当右边没了, 再轮到左边
dfs(root.left, step + 1, res)
}
}
a == ('1'||'2'||'3') ? false : true
写法进行改进,写出你优化后的方法![1,2,3].includes(+a)
或者
!['1', '2', '3'].includes(a + '')
或者
!{1: true, 2: true, 3: true}[a]
[1]
199. 二叉树的右视图: https://leetcode-cn.com/problems/binary-tree-right-side-view/
本文分享自 JavaScript全栈 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!