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

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

例如:
给定二叉树: [3,9,20,null,null,15,7],
3/  9  20/  15   7

返回:
[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;
};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值