剑指 Offer 32 - I. 从上到下打印二叉树


题目链接:https://leetcode-cn.com/problems/cong-shang-dao-xia-da-yin-er-cha-shu-lcof/

本文基于JavaScript语言进行解题:一、层序遍历(队列)

一、层序遍历(队列)

思想:先将头结点入队;每轮出队一个结点时,若存在将其左(右)子结点入队;当队列为空时结束。

“听说层序遍历和队列更配哦。” hh~让我们共享丝滑,让美好继续漫延??

时间复杂度 O(N): N 为二叉树的节点数量,即 BFS 需循环 N 次。

 1 /**
 2  * @param {TreeNode} root
 3  * @return {number[]}
 4  * 广度优先遍历、队列
 5  * 第一步将根结点入队,每个结点出队时若存在左(右)子结点则将其入队
 6  */
 7 var levelOrder = function (root) {
 8   if(root == null) return [];
 9   let queue = [];
10   let result = [];
11   queue.push(root);
12   while(queue.length != 0) {
13     let node = queue.shift();
14     result.push(node.val);  //存储出队结点的值
15     if(node.left != null) queue.push(node.left);
16     if(node.right != null) queue.push(node.right);
17   }
18   return result;
19 };