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

按之字形顺序打印二叉树

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

import java.util.ArrayList;

/*
public class TreeNode {
    int val = 0;
    TreeNode left = null;
    TreeNode right = null;

    public TreeNode(int val) {
        this.val = val;

    }

}
*/
public class Solution {
    public ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) {
        ArrayList<ArrayList<Integer>> res=new ArrayList<ArrayList<Integer>>();
        if(pRoot==null) return res;
        Stack<TreeNode> stack1=new Stack<>();
        Stack<TreeNode> stack2=new Stack<>();
        stack1.push(pRoot);
        while(!stack1.empty()||!stack2.empty()){
            ArrayList<Integer> level1=new ArrayList<>();
            ArrayList<Integer> level2=new ArrayList<>();
            while(!stack1.empty()){
                //如果stack1不为空,说明奇数行不为空,所以要把把它的左右结点放偶数行栈2
                if(stack1.peek().left!=null) stack2.push(stack1.peek().left);
                if(stack1.peek().right!=null) stack2.push(stack1.peek().right);
                level1.add(stack1.pop().val);
            }
            while(!stack2.empty()){
                //如果stack2不为空,说明偶数行不为空,所以要把把它的右左结点放奇数行栈1
                if(stack2.peek().right!=null) stack1.push(stack2.peek().right);
                if(stack2.peek().left!=null) stack1.push(stack2.peek().left);
                level2.add(stack2.pop().val);
            }
            if(!level1.isEmpty()) res.add(level1);
            if(!level2.isEmpty()) res.add(level2);
        }
        return res;
    }

}
全部评论

相关推荐

10-29 16:42
门头沟学院 Java
1.今天什么国标的公司打电话约面试,还得准备ppt,好麻烦,网上查薪资一般,打算拒了,不面了2.字节又复活了,什么安全开发,也不知道怎么样,面一面试试吧,还是挺想去字节的,但好难,随缘吧所以今天没面试
嵌入式的小白:面试前可以好好准备下 1.看看你投递的岗位的岗位描述,分析下是哪个业务线,同使要罗列他们描述中提到的技术点 2.根据1中的两点准备 3.岗位描述中应该还有语言要求,这个刷刷八股,要是对自己语言能力很有把握,那就不用看这点了 4.找下你简历中项目部分,看有没有和岗位描述中技术点重合的,这种在面试提到项目时,是高概率问题 好好准备,祝你面试顺利
我的求职进度条
点赞 评论 收藏
分享
迷茫的大四🐶:💐孝子启动失败,改为启动咏鹅
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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