二叉树 获取二叉树右视图

85 阅读1分钟

题目

给定一个二叉树,获取二叉树的右视图,右视图指每一层的最后一个节点

  • 对二叉树进行层序遍历,当前层的节点放入子节点后弹出,保证下一轮遍历只会是下一层的节点,由此来保证层级关系,然后获取每一层的最后一个节点‘
function rightTree(node) {
  const res = [];
  const queue = [node];

  while (queue.length) {
    const currentLayerLen = queue.length;
    // 因为上一层节点都被 shift 掉了,所以每一次都遍历的当前层
    for (let i = 0; i < currentLayerLen; i++) {
      const node = queue.shift(); // 从队列中取出当前层的节点

      // 如果是当前层的最后一个节点,将其值添加到结果数组中
      if (i === currentLayerLen - 1) {
        res.push(node.val);
      }
      // 将当前节点的左右子节点加入队列,以便下一轮遍历
      if (node.left) queue.push(node.left);
      if (node.right) queue.push(node.right);
    }
  }
}