一、题目来源:102. 二叉树的层序遍历
二叉树的遍历一共有四种方式
- 前序遍历
- 中序遍历
- 后序遍历
- 层次遍历
题目描述:
示例 1:
输入:root = [3,9,20,null,null,15,7]
输出:[[3],[9,20],[15,7]]
示例2
输入:root = [1]
输出:[[1]]
解题思路
- 层次遍历的意思就是每一层从左往右遍历。累加起来的遍历数据就是输出结果。
- 所以定义一个数组存每一层的节点值。并存每一层节点,作为每一次循环的根节点。
- 遍历结束的依据就是这一层没有节点。
具体的代码实现:
var levelOrder = function(root) {
if(!root) return []
let result = [[root.val]]
let stack = [root]// 从根节点开始
while(stack.length) {
let child = [] // 存每一层根节点的值
let cur = [] // 存每一层的根节点
for(let i = 0; i < stack.length; i++ ) {
if(stack[i].left){
child.push(stack[i].left.val)
cur.push(stack[i].left)
}
if(stack[i].right){
child.push(stack[i].right.val)
cur.push(stack[i].right)
}
}
stack = cur
child.length && result.push(child)
}
return result
};