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

按之字形顺序打印二叉树

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

import java.util.ArrayList;
import java.util.Stack;

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

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

    }

}
*/
//1.将节点放入st1
//3.打印st1中节点,将其孩子节点放入st2(从左到右)
//4.打印st2中节点,将其孩子节点放入st1(从右到左)
//5.重复上述过程,直到栈空为止
public class Solution {
    public ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) {
        Stack<TreeNode> st1 = new Stack<TreeNode>();
        Stack<TreeNode> st2 = new Stack<TreeNode>();
        // ArrayList<Integer> layer = new ArrayList<Integer>();
        ArrayList<ArrayList<Integer>> result = new ArrayList<ArrayList<Integer>>();
        TreeNode temp;
        if(pRoot == null){
            return result;
        }
        st1.push(pRoot);
        while(!st1.empty()||!st2.empty()){
            ArrayList<Integer> layer1 = new ArrayList<Integer>();
            while(!st1.empty()){
                temp = st1.pop();
                if(temp.left != null){
                    st2.push(temp.left);
                }
                if(temp.right != null){
                    st2.push(temp.right);
                }
                layer1.add(temp.val);
            }
            if(!layer1.isEmpty()){
                result.add(layer1);
            }
            ArrayList<Integer> layer2 = new ArrayList<Integer>();
            while(!st2.empty()){
                temp = st2.pop();
                if(temp.right != null){
                    st1.push(temp.right);
                }
                if(temp.left != null){
                    st1.push(temp.left);
                }
                layer2.add(temp.val);
            }
            if(!layer2.isEmpty()){
                result.add(layer2);
            }
        }
        return result;

    } 


}

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-24 12:26
点赞 评论 收藏
分享
07-20 21:57
已编辑
门头沟学院 Java
点赞 评论 收藏
分享
07-02 10:39
门头沟学院 Java
Steven267:说点真实的,都要秋招了,还没有实习,早干嘛去了,本来学历就差,现在知道急了,而且你这个简历完全可以写成一页,劣势太大了,建议转测试
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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