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

按之字形顺序打印二叉树

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

思路:当前是往左塞还是往右塞

特别注意,循环终止条件应该是||而不是&& 最开始只有left是满的 如果是&&就会直接跳出!!! 写||的时候满足一个都可以,都是0的时候才跳出

/* function TreeNode(x) {
    this.val = x;
    this.left = null;
    this.right = null;
} */
function Print(pRoot){
    // write code here
    if(pRoot==null)return []
    var ans=new Array();
    var left_list=new Array();
    var right_list=new Array();
    var from_left=true;
    left_list.push(pRoot);
    console.log(left_list.length);
    while(left_list.length!=0||right_list.length!=0){
        var tmp=new Array();
        if(from_left){//要遍历的是left,right应该为空
            for(let i=0;i<left_list.length;i++){
                if(left_list[i].left)right_list.push(left_list[i].left);
                if(left_list[i].right)right_list.push(left_list[i].right);
                tmp.push(left_list[i].val);
            }
            left_list=[];
        }else{
            // 要遍历right  而left为空 那么按顺序加入 然后再重新来一次
            for(let i=0;i<right_list.length;i++){
                if(right_list[i].left)left_list.push(right_list[i].left);
                if(right_list[i].right)left_list.push(right_list[i].right);
                tmp.push(right_list[right_list.length-i-1].val);
            }
            right_list=[]
        }
        console.log('xunhuan ')
        console.log(tmp);
        ans.push(tmp);
        from_left=!from_left;
    }
    return ans;
}
module.exports = {
    Print : Print
};
全部评论

相关推荐

点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务