zoukankan      html  css  js  c++  java
  • 牛客(59)按之字形顺序打印二叉树

    //    题目描述
    //    请实现一个函数按照之字形打印二叉树,
    //    即第一行按照从左到右的顺序打印,
    //    第二层按照从右至左的顺序打印,
    //    第三行按照从左到右的顺序打印,
    //    其他行以此类推。
    
        public class TreeNode {
            int val = 0;
            TreeNode left = null;
            TreeNode right = null;
    
            public TreeNode(int val) {
                this.val = val;
    
            }
    
        }
    
        public ArrayList<ArrayList<Integer>> Print(TreeNode pRoot) {
    
            ArrayList<ArrayList<Integer>> arrayLists = new ArrayList<ArrayList<Integer>>();
            if (pRoot==null){
                return arrayLists;
            }
    
            Stack<TreeNode> stack1 = new Stack<TreeNode>();
            Stack<TreeNode> stack2 = new Stack<TreeNode>();
            stack1.add(pRoot);
            while (!stack1.isEmpty() || !stack2.isEmpty()) {
                if (!stack1.isEmpty()) {
                    ArrayList<Integer> arrayList = new ArrayList<Integer>();
                    while (!stack1.isEmpty()) {
                        TreeNode node = stack1.pop();
                        arrayList.add(node.val);
                        if (node.left != null) {
                            stack2.add(node.left);
                        }
                        if (node.right != null) {
                            stack2.add(node.right);
                        }
                    }
                    arrayLists.add(arrayList);
                }else  if (!stack2.isEmpty()) {
                    ArrayList<Integer> arrayList = new ArrayList<Integer>();
                    while (!stack2.isEmpty()) {
                        TreeNode node = stack2.pop();
                        arrayList.add(node.val);
                        if (node.right != null) {
                            stack1.add(node.right);
                        }
                        if (node.left != null) {
                            stack1.add(node.left);
                        }
                    }
                    arrayLists.add(arrayList);
                }
            }
    
            return arrayLists;
        }
  • 相关阅读:
    canvas 方法参数智能提示
    layui 关闭弹窗,刷新父窗体页面
    UI设计灵感集结地
    Java Poi 读取excel 对所有类型进行处理
    jeecg v3.6.6 excel导入js方法完善
    父、子页面之间页面元素的获取,方法的调用
    ps载入渐变
    ps载入画笔
    做设计常用的素材下载网站
    色彩搭配神器
  • 原文地址:https://www.cnblogs.com/kaibing/p/9109691.html
Copyright © 2011-2022 走看看