来源:力扣(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