「这是我参与2022首次更文挑战的第6天,活动详情查看:2022首次更文挑战」
199. 二叉树的右视图
给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。
例如,给定如下二叉树: root = [3,5,1,6,2,0,8,null,null,7,4]
「示例1:」
输入: [1,2,3,null,5,null,4]
输出: [1,3,4]
「示例2:」
输入: [1,null,3]
输出: [1,3]
「示例3:」
输入: []
输出: []
「提示: 」
1. 二叉树的节点个数的范围是 [0,100]
1. -100 <= Node.val <= 100
解题思路
二叉树的右视图:指的是从树的右边观看,能看到的所有节点;
-
我们可以通过递归的方式层级遍历,遍历每层的最后一个节点
-
找到当前这一层节点的最后以后一个节点的值,放入结果数组里面
-
最后我们只需要返回结果集合即可
代码实现
/**
* 199. 二叉树的右视图
* @param {TreeNode} root
* @return {number[]}
*/
var rightSideView = function (root) {
let res = [], // 结果集合
queue = []; // 用来保存当前这一层的节点数量
queue.push(root);
while (queue.length && root) { // 在当前这一层root不为null,并且当前这一层的节点数量不为0的时候
let len = queue.length;
while (len--) { // while循环对当前层的节点数量进行自减
let node = queue.shift();
if (len === 0) { // 当前层节点数量只剩最后一个的时候
res.push(node.val); // 保存当前节点,当前节点就是右视图可以看到的这一层的一个节点
}
node.left && queue.push(node.left); // 递归左节点
node.right && queue.push(node.right); // 递归左节点
}
}
return res; // 返回结果集合
};
最后如果你对本文有任何的建议或者补充,可以在留言区留言,我会认真阅读每一位读者提出的有效的建议!感谢阅读,记得点赞,Thanks~