题目描述: 从上往下打印出二叉树的每个节点,同层节点从左至右打印。
从上往下打印出二叉树的每个节点,同层节点从左至右打印。
需要使用一个队列来存储有用的节点。整体的思路如下:
时间复杂度和空间复杂度是 O(N)。代码实现如下:
// ac地址:https://leetcode-cn.com/problems/cong-shang-dao-xia-da-yin-er-cha-shu-lcof/
// 原文地址:https://xxoo521.com/2020-02-02-btree-level-travel/
/**
* @param {TreeNode} root
* @return {number[]}
*/
var levelOrder = function(root) {
if (!root) {
return [];
}
const data = [];
const queue = [root];
while (queue.length) {
const first = queue.shift();
data.push(first.val);
first.left && queue.push(first.left);
first.right && queue.push(first.right);
}
return data;
};
在 Js 中没有专门的“队列”,都使用数组来实现。队列的常用操作:
array.push(val)
array.shift()
array[0]
!!array.length