Appearance
二叉树的层序遍历
递归
js
var levelOrder = function (root) {
const res = [];
function dfs(root, n) {
if (!root) return;
res[n] = res[n] ? res[n].concat(root.val) : [root.val];
dfs(root.left, n + 1);
dfs(root.right, n + 1);
}
dfs(root, 0);
return res;
};
var levelOrder = function (root) {
const res = [];
function dfs(root, n) {
if (!root) return;
res[n] = res[n] ? res[n].concat(root.val) : [root.val];
dfs(root.left, n + 1);
dfs(root.right, n + 1);
}
dfs(root, 0);
return res;
};
迭代
js
var levelOrder = function (root) {
if (!root) return [];
const queue = [root];
const res = [];
while (queue.length) {
const arr = [];
// 注意这里i循环 一开始是固定的
for (let i = queue.length - 1; i >= 0; i--) {
const node = queue.pop();
arr.push(node.val);
node.left && queue.unshift(node.left);
node.right && queue.unshift(node.right);
}
res.push(arr);
}
return res;
};
var levelOrder = function (root) {
if (!root) return [];
const queue = [root];
const res = [];
while (queue.length) {
const arr = [];
// 注意这里i循环 一开始是固定的
for (let i = queue.length - 1; i >= 0; i--) {
const node = queue.pop();
arr.push(node.val);
node.left && queue.unshift(node.left);
node.right && queue.unshift(node.right);
}
res.push(arr);
}
return res;
};