• 剑指Offer(二叉树)-之字形打印二叉树


    题目描述:


    请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。


      下图借鉴一位牛客网的同学的做法:

    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;
    
        }
    
    }
    */
    public class Solution {
        public ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) {
            ArrayList<ArrayList<Integer>> result = new ArrayList<>();
            if(pRoot==null){
                return result;
            }
            Stack<TreeNode> stack1 = new Stack<>();
            Stack<TreeNode> stack2 = new Stack<>();
            stack1.add(pRoot);
            while(stack1.size()>0||stack2.size()>0){
                ArrayList<Integer> nodeArrayList = new ArrayList<>();
                if(stack1.size()>0){
                    int size = stack1.size();                
                    for(int i=0;i<size;i++){
                        TreeNode p = stack1.pop();
                        nodeArrayList.add(p.val);
                        if(p.left!=null){
                            stack2.add(p.left);
                        }
                        if(p.right!=null){
                            stack2.add(p.right);
                        }
                    }
                    result.add(nodeArrayList);
                    continue;
                }
                if(stack2.size()>0){
                    int size = stack2.size();
                    for(int i=0;i<size;i++){
                        TreeNode p = stack2.pop();
                        nodeArrayList.add(p.val);
                        if(p.right!=null){
                            stack1.add(p.right);
                        }
                        if(p.left!=null){
                            stack1.add(p.left);
                        }
                    }
                    result.add(nodeArrayList);
                    continue;
                }
            }
            return result;
        }
    
    }
    

      

  • 相关阅读:
    jQuery自学笔记(四):jQuery DOM节点操作
    jQuery自学笔记(三):jQuery动画效果
    jQuery自学笔记(二):jQuery选择器
    面试记录与复盘总结
    wh-研发功能复盘
    st项目-要素标记功能的实现以及经验总结
    ST项目经验总结2
    S台项目记录-1
    统计模型项目开发经验汇总
    开发规范
  • 原文地址:https://www.cnblogs.com/dashenaichicha/p/12609216.html
Copyright © 2020-2023  润新知