难度
题目内容 给定一个二叉树的 根节点
root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。
题解
采用广度优先算法遍历二叉树,把每一层的最右侧元素取出来,得到的队列就是右视图的结果。
/**
* @param {TreeNode} root
* @return {number[]}
*/
var rightSideView = function(root) {
// 如果树为空直接返回空数组
if(!root) return []
// 初始化第一层
const que = [root];
// 初始化右视图结果队列
const resArr = []
while(que.length) {
const len = que.length;
// 当前是整一层的节点,队列的最后一个值就是最右侧节点
resArr.push(que[que.length-1].val)
for(let i=0;i<len;i++) {
// 每次从最左侧取出一个值
const node = que.shift();
if(node.left) que.push(node.left)
if(node.right) que.push(node.right)
}
}
return resArr
};