剑指offer——59.按之字形顺序打印二叉树

来源:互联网 发布:女生做数据运营 编辑:程序博客网 时间:2024/05/17 05:56

题目描述

请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。

代码

思路:按深度遍历二叉树,深度(从0开始)为奇数的反转加入数组。

function Print(pRoot){    // write code here    var queue = [];//存储节点队列    var result = [];    if(pRoot==null) return result;    var nextLevel = 0;    queue.push(pRoot);    var toBePrinted = 1;//每一行节点个数    var level = 0;//深度    var arr = [];    while(queue.length){        var temp = queue.shift();        toBePrinted--;        arr.push(temp.val);        if(temp.left){            queue.push(temp.left);            nextLevel++;        }        if(temp.right){            queue.push(temp.right);            nextLevel++;        }        if(toBePrinted==0){            toBePrinted=nextLevel;            nextLevel=0;            level++;            if(level%2==0){                arr.reverse();            }            result.push(arr);            arr = [];        }    }    return result;}
阅读全文
0 0
原创粉丝点击