LeetCode102 二叉树的层序遍历 & 剑指Offer 32 - II 从上到下打印二叉树 II
题目
解题
参考:LeetCode《程序员面试金典》面试题 04.03. 特定深度节点链表,区别是这题是用 array of array 存储,而前者是用 array of linkedlist 存储。
相似题目:
题目 | 解题 |
---|---|
面试题 04.03. 特定深度节点链表 | 面试题 04.03. 特定深度节点链表解题 |
102. 二叉树的层序遍历、剑指 Offer 32 - II. 从上到下打印二叉树 II | 解题 |
剑指 Offer 32 - I. 从上到下打印二叉树 | 剑指Offer 32 - I 从上到下打印二叉树解题 |
解题一:深度优先搜索 DFS
// javascript
var levelOrder = function(root) {
const res = new Array();
findLevelOrder(root, 0, res);
return res;
};
var findLevelOrder = function(root, level, res) {
if (root === null) return;
let curArr = null;
if (res.length === level) {
curArr = new Array();
res.push(curArr);
} else {
curArr = res[level];
}
curArr.push(root.val);
findLevelOrder(root.left, level + 1, res);
findLevelOrder(root.right, level + 1, res);
};
解题二:广度优先搜索 BFS
// javascript
var levelOrder = function(root) {
const res = new Array(), queue = new Array();
if (root !== null) queue.push(root);
while (queue.length > 0) {
const len = queue.length;
const curLevel = new Array();
for (let i = 0; i < len; i++) {
const node = queue.shift();
if (node.left !== null) queue.push(node.left);
if (node.right !== null) queue.push(node.right);
curLevel.push(node.val);
}
res.push(curLevel);
}
return res;
};