zoukankan      html  css  js  c++  java
  • 按之字形打印二叉树 --剑指offer

    题目描述

    请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。
     
    思路:两个栈 一个存储奇数层 一个存储偶数层结点 分别遍历
    import java.util.Stack;
    import java.util.ArrayList;
    /*
    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<>();
            int i=1;
            stack1.push(pRoot);
            while (!stack1.isEmpty() || !stack2.isEmpty()){
                ArrayList<Integer> list=new ArrayList<>();
                if(i % 2 !=0){//奇数层
                    while (!stack1.isEmpty()){
                        TreeNode node=stack1.pop();
                        if(node != null){
                            list.add(node.val);
                            if(node.left != null) {
                                stack2.add(node.left);
                            }
                            if(node.right != null) {
                                stack2.add(node.right);
                            }
                        }
                    }
                }else {
                    while (!stack2.isEmpty()){
                        TreeNode node=stack2.pop();
                        if(node != null){
                            list.add(node.val);
                            if(node.right != null) {
                                stack1.add(node.right);
                            }
                            if(node.left != null) {
                                stack1.add(node.left);
                            }
                        }
                    }
                }
                if(list != null){
                    result.add(new ArrayList<>(list));
                }
                i ++;
            }
            return result;
        }
    }
  • 相关阅读:
    使脱排油烟机能够听懂你的话(超级简单的方法)
    解决手机无法连接【小米AI音箱】播放音乐问题
    相机稳定器使用注意点
    Scrapy基本命令
    Linux环境下的Scala环境搭建
    Linux基本操作
    MySQL常用操作
    PySpark笔记
    Linux环境下配置及启动Hadoop(伪集群)
    idea: unable to import maven project
  • 原文地址:https://www.cnblogs.com/nlw-blog/p/12469711.html
Copyright © 2011-2022 走看看