抄的题解
递归(前序遍历)
主要思路:前序遍历,中、左、右
左边的节点一定先于右边节点遍历到,加入至对应的数组中,满足层序遍历的要求;
要点:
1、利用一个level变量标记当前递归的深度,将节点的值push到当前深度的数组的后面;
2、level变量大于res数组的size,说明第一次进入二叉树本层,对res扩容;
扩展:
前序:中、左、右
中序:左、中、右
后续:左、右、中
三种遍历都是左边节点一定比右边节点先遍历到,那么push_back至对应深度的数组次序也一定与层次遍历一致;所以针对此方法,中序、后序一样可以实现层次遍历。
对示例1模拟前序遍历,如下图所示:
function levelOrder( root ) {
  function preOrder(root,level){
    if(root==null)
      return;
    if (level >= res.length)
      res.push([]);
    res[level].push(root.val);
    preOrder(root.left,level+1);
    preOrder(root.right,level+1);
  }
  let res = [];
  preOrder(root,0);
  return res;
}
module.exports = {
    levelOrder : levelOrder
};

京公网安备 11010502036488号