力扣链接:199.二叉树的右视图
难度:⭐⭐
解题关键词:二叉树
、层序遍历
、队列
解题思路:常规二叉树层序遍历,把每一层最后一个元素加入到结果中。
typescript
function rightSideView(root: TreeNode | null): number[] {
// 如果 root 为空,直接返回空数组
if (root === null) return [];
// 队列
const queue: TreeNode[] = [root];
// 结果
const result: number[] = [];
// 当队列不为空时
while (queue.length) {
// 保存当前层级的 node 个数
let size = queue.length;
// 当前层级的 node 值
const curLayerValues: number[] = [];
while (size--) {
// 出队
const node = queue.shift();
curLayerValues.push(node.val);
// 左节点
if (node.left) queue.push(node.left);
// 右节点
if (node.right) queue.push(node.right);
}
// 将最后一个元素加入 result 中,相当于从右面看到的 node
result.push(curLayerValues[curLayerValues.length - 1]);
}
return result;
}