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

按之字形顺序打印二叉树

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;

    } 


}

全部评论

相关推荐

zzzzhz:兄弟你先猛猛投简历至少三百家,能约到面试就去面。最近可以速成智能小车,智慧家居烂大街的项目,不需要自己写,只需要把里面的代码讲解看明白就行。把其中涉及到的八股文都拿出来单独背一下,我去年找工作就一个智能小车智慧家居找了10k差不多。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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