二叉树的右视图
给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。
示例 1:

codeType
输入:root = [1,2,3,null,5,null,4]
输出:[1,3,4]
解释:
示例 2:

codeType
输入:root = [1,2,3,4,null,null,null,5]
输出:[1,3,4,5]
解释:
示例 3:
codeType
输入:root = [1,null,3]
输出:[1,3]
示例 4:
codeType
输入:root = []
输出:[]
提示:
- 二叉树的节点个数的范围是 [0,100]
- -100 <= Node.val <= 100
解法
ts
/**
* Definition for a binary tree node.
* class TreeNode {
* val: number
* left: TreeNode | null
* right: TreeNode | null
* constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) {
* this.val = (val===undefined ? 0 : val)
* this.left = (left===undefined ? null : left)
* this.right = (right===undefined ? null : right)
* }
* }
*/
function rightSideView(root: TreeNode | null): number[] {
// 用层次遍历得到每一层的最后一个节点
if(!root) return []
const q: TreeNode[] = []
const res: number[] = []
q.push(root)
while(q.length !== 0){
const n = q.length
for(let i = 0; i < n; i++){
let curNode = q.shift()
if(curNode.left) q.push(curNode.left)
if(curNode.right) q.push(curNode.right)
if(i === n - 1){ // 每层最后一个值保存
res.push(curNode.val)
}
}
}
return res
};