102. 二叉树的层序遍历
「题目:」
给你二叉树的根节点 root ,返回其节点值的 层序遍历 。(即逐层地,从左到右访问所有节点)。
「示例:」
输入:root = [3,9,20,null,null,15,7],输出:[[3],[9,20],[15,7]]。
「递归解法:」
使用深度优先搜索来解决,递归的深度即是二叉树的层级,然后通过二维数组来记录当前层级的节点元素。
时间复杂度:O(n),空间复杂度:O(n)。
const levelOrder = root => {
const ans = [];
dfs(root, 0, ans);
return ans;
}
function dfs(root, level, ans) {
if (!root) {
return;
}
if (!ans[level]) {
ans[level] = [];
}
ans[level].push(root.val);
dfs(root.left, level + 1, ans);
dfs(root.right, level + 1, ans);
return;
}
「迭代解法:」
使用广度优先搜索来解决,通过队列来保存每一层根节点的左右子树,再使用二位数组来存储每层的节点元素。
时