按之字形顺序打印二叉树

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

import java.util.ArrayList;
import java.util.Stack;

public class Solution {
    
    public ArrayList<ArrayList<Integer>> Print(TreeNode pRoot) {
        
        if(pRoot == null)
            return new ArrayList<ArrayList<Integer>>();
        Stack<TreeNode> stack1 = new Stack<TreeNode>();
        Stack<TreeNode> stack2 = new Stack<TreeNode>();
        ArrayList<ArrayList<Integer>> array = new ArrayList<ArrayList<Integer>>();
        ArrayList<Integer> a = new ArrayList<Integer>();
        stack1.push(pRoot);
        while(!stack1.isEmpty() || !stack2.isEmpty()) {
            
            while(!stack1.isEmpty()) {
                
                TreeNode node = stack1.pop();
                a.add(node.val);
                if(node.left != null)
                    stack2.push(node.left);
                if(node.right != null)
                    stack2.push(node.right);
            }
            if(a.size() > 0)
                array.add(a);
            a = new ArrayList<Integer>();
            while(!stack2.isEmpty()) {
                
                TreeNode node = stack2.pop();
                a.add(node.val);
                if(node.right != null) {
                    
                    stack1.push(node.right);
                }
                if(node.left != null) {
                    
                    stack1.push(node.left);
                }
            }
            if(a.size() > 0)
                array.add(a);
            a = new ArrayList<Integer>();
        }
        return array;
    }
    
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 哎, 晒个风景吧~ 今天的天空,白云朵朵。。。祝今天去INTERSPEECH 2016的小伙伴,一切顺利! 时间限...
    AlwaysFrank阅读 1,303评论 1 1
  • 题目描述请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按...
    juexin阅读 254评论 0 0
  • 树的概述 树是一种非常常用的数据结构,树与前面介绍的线性表,栈,队列等线性结构不同,树是一种非线性结构 1.树的定...
    Jack921阅读 4,509评论 1 31
  • 数据结构和算法--二叉树的实现 几种二叉树 1、二叉树 和普通的树相比,二叉树有如下特点: 每个结点最多只有两棵子...
    sunhaiyu阅读 6,546评论 0 14
  • 多少人相逢不相识, 多少人相识不相知, 多少人相知不相爱, 多少人爱了又消失。
    abe4c0570901阅读 144评论 1 1