超详细从上到下打印二叉树JS语言

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

    3
   / \
  9  20
    /  \
   15   7
返回:

[3,9,20,15,7]

分析:这就是一个在数据结构中为广度优先遍历的方法,先从跟节点开始,在从根节点的子节点开始,在分别取根节点的子节点.......以此循环遍历。

就实例而言:我创建了两个数组:queue为临时数组。res为最终数组。

先将3放入最终数组中,再将子节点9,20放在临时数组中。此时9为临时数组中根节点。

则将9放在最终数组中,再将子节点null,null放到临时数组中(为空)。此时20为临时数组中根节点。

则将20放在最终数组中,再将子节点15,7放在临时数组中。此时15为临时数组根节点

......................................................................以此循环。

实现代码

/**
 * 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 queue = [];let res = []
       queue.push(root)
       while(queue.length!=0){
           node = queue.shift()
           res.push(node.val)
           if(node.left){
               queue.push(node.left)
           }
           if(node.right){
               queue.push(node.right)
           } 

       }
              return res;
      
};

shift是取数组最走前面的元素(删掉数组最前边元素,并返回该元素的值) 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值