JS 剑指 Offer 32 - I. 从上到下打印二叉树

从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。

例如:
给定二叉树: [3,9,20,null,null,15,7],
JS 剑指 Offer 32 - I. 从上到下打印二叉树_第1张图片

返回:
[3,9,20,15,7]

思路:广度优先遍历

  1. 当节点不存在时,返回 []
  2. 当节点存在时,定义两个数组,list数组用来保存树的节点,result数组用来保存最后的结果。
    每次取出list的第一个节点保存在temp中,将它的value值push进result数组中,然后判断该节点左右子节点是否存在,存在就push进入list的最后面。重复进行,直到list中数据都被取出。
arrayObject.shift():删除并返回数组第一个元素的值。
/**
 * Definition for a binary tree node.
 * function TreeNode(val) {
 *     this.val = val;
 *     this.left = this.right = null;
 * }
 */
/**
 * @param {TreeNode} root
 * @return {number[]}
 */
var levelOrder = function(root) {
  if(!root) return [];
  let list = [];
  let result = [];
  list.push(root);
  while(list.length !== 0){
    let temp = list.shift();
    result.push(temp.val);
    if(temp.left !== null){
      list.push(temp.left);
    }
    if(temp.right !== null){
      list.push(temp.right);
    }
  } 
  
  return result;
};

你可能感兴趣的:(剑指Offer刷题)