剑指offer_32_从上到下打印二叉树【javascript】

66 阅读1分钟

题目:不分行从上到下打印二叉树

从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。例如输入如下的二叉树,则一次打印出8,6,10,5,7,9,11.

        8
      /   \
    6       10
  /   \    /   \
 5     7  9    11

示例、

给定二叉树: [3,9,20,null,null,15,7],

    3
   / \
  9  20
    /  \
   15   7

返回: [3,9,20,15,7]

题解

广度优先遍历

/**
 * Definition for a binary tree node.
 * function TreeNode(val) {
 *     this.val = val;
 *     this.left = this.right = null;
 * }
 */
/**
 * @param {TreeNode} root
 * @return {number[]}
 */
var levelOrder = function(root) {
    const res = [];
    if (!root) return res;
    const queue = [];
    queue.push(root);
    while(queue.length) {
        let curNOde = queue.shift();
        res.push(curNOde.val);
        if (curNOde.left) {
            queue.push(curNOde.left)
        }
        if (curNOde.right) {
            queue.push(curNOde.right)
        }
    }
    return res;
};

复杂度分析

  • 时间复杂度:O(n)
  • 空间复杂度:O(n)

引用

  • 剑指offer书籍
  • 力扣题解