来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/binary-tree-right-side-view
给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。
示例:
输入: [1,2,3,null,5,null,4]
输出: [1, 3, 4]
解释:
1 <---
/ \
2 3 <---
\ \
5 4 <---
广度优先遍历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 str = [];
str.push(root);
//记录最右边的节点
let arr = [];
while(str.length){
//将该层的第一个节点放入队列中
arr.push(str[0].val);
//节点数量
let len = str.length;
//遍历这一层的所有节点
while(len--){
//遍历到的当前节点,将它的孩子节点放入队列中(下一层),并将该节点出队
let lastNode = str.shift();
//孩子节点从右往左依次进队
if(lastNode.right) str.push(lastNode.right);
if(lastNode.left) str.push(lastNode.left);
}
}
return arr;
};
原文:https://www.cnblogs.com/liu-xin1995/p/12749286.html