Java日记2018-05-08

第一题 按之字形顺序打印二叉树
实现方法是采用两个栈,首先将根节点放入栈s1,然后偶数层从右往左插入,奇数层从左往右,所以要定义一个层数layer。因为栈的后入先出的特点,奇数层先保存右树,后保存左树,偶数层相反

public static ArrayList<ArrayList<Integer>> zhiZiPrint(TreeNode pnode) {
        ArrayList<ArrayList<Integer>> list = new ArrayList<ArrayList<Integer>>();
        //存放奇数层
        Stack<TreeNode> s1 = new Stack<TreeNode>();
        //存放偶数层
        Stack<TreeNode> s2 = new Stack<TreeNode>();
        //初始化层数
        int layer =1;
        //初始化层1
        s1.push(pnode);
        while(!s1.isEmpty() || !s2.empty()) {
            if(layer%2==1) {
                //奇数层
                ArrayList<Integer> temp =new  ArrayList<Integer>();

                while(!s1.empty()){
                    TreeNode node = s1.pop();
                    if(node!=null) {
                         temp.add(node.val);
                        System.out.print(node.val + " ");
                        s2.push(node.right);
                        s2.push(node.left);
                    }
                }
                if(!temp.isEmpty()){
                    layer++;
                    list.add(temp);
                }
                
                
            } else {
                ArrayList<Integer> temp =new  ArrayList<Integer>();

                while(!s1.empty()){
                    TreeNode node = s1.pop();
                    if(node!=null) {
                        temp.add(node.val);
                        System.out.print(node.val + " ");
                        s2.push(node.right);
                        s2.push(node.left);
                    }
                }
                if(!temp.isEmpty()){
                    layer++;
                    list.add(temp);
                }
                
            }
        }
        
        
        return list;
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • To write by Golang is next task. 一篇文章搞定面试中的二叉树 2018-02-07...
    HuJay阅读 3,192评论 0 0
  • 一、基本数据类型 注释 单行注释:// 区域注释:/* */ 文档注释:/** */ 数值 对于byte类型而言...
    龙猫小爷阅读 9,774评论 0 16
  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 14,357评论 0 33
  • 对年鉴文稿的编辑和审校就是依照年鉴的规范和要求对条目内容进行“加工制作”。条目是以年度事实和资料为主题记载客观事物...
    剑庐阅读 4,436评论 0 1
  • 有两个字,很多人都有,就是动力,这是促使我们变得更优秀的一个美好词汇 很多动力其实来自于欲望 初中时,看见同学们都...
    aa耒O阅读 2,999评论 1 4

友情链接更多精彩内容