Skip to content

力扣链接: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;
}