题解 | #按之字形顺序打印二叉树#

按之字形顺序打印二叉树

http://www.nowcoder.com/practice/91b69814117f4e8097390d107d2efbe0

function TreeNode(x) {
    this.val = x;
    this.left = null;
    this.right = null;
}
function Print(pRoot)
{
//最终输出的结果
   let result = []
   //记录当前层数
   let depth = 0
   //每一层的节点
   let mid_result = []
   //判空
   if(!pRoot) return result
   if(!pRoot.left&&!pRoot.right){
       mid_result.push(pRoot.val)
       result.push(mid_result)
       return result
   }
    //保存当前层节点
   let current = []
   //保存下一层层节点
   let next = []
   
   current.push(pRoot)
   while(current.length||next.length){
       while(current.length){
//         添加一个节点的左右孩子后就将其弹出
           if(current[0].left) next.push(current[0].left)
           if(current[0].right) next.push(current[0].right)
           mid_result.push(current[0].val)
           current.shift()
       }
//        current为空,说明当前层遍历完
       depth++
       if(depth%2===0){
           result.push(mid_result.reverse())
       }
       else{
           result.push(mid_result)
       }
       mid_result = []
       current = next
       next = []
   }
   return result
}
module.exports = {
    Print : Print
};
全部评论

相关推荐

不愿透露姓名的神秘牛友
昨天 11:16
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-09 13:05
TMD找工作本来就烦,这东西什么素质啊😡
Beeee0927:hr是超雄了,不过也是有道理的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务