按之字形顺序打印二叉树java实现
来源:互联网 发布:淘宝优木家具怎么样 编辑:程序博客网 时间:2024/06/04 00:41
请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。
思路:定义两个栈,分别遍历整个二叉树并将结点入栈,两个栈互相配合,按照从左往右或者从右往左的顺序入栈。一层一层的入栈和出栈。则可以达到题目要求。
import java.util.ArrayList;import java.util.*;/*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>> aList=new ArrayList<ArrayList<Integer>>(); if(pRoot==null) return aList; Stack<TreeNode> s1=new Stack<TreeNode>(); s1.add(pRoot); Stack<TreeNode> s2=new Stack<TreeNode>(); while(!s1.isEmpty()||!s2.isEmpty()){ if(!s1.isEmpty()){ ArrayList<Integer> aList2=new ArrayList<Integer>(); while(!s1.isEmpty()){ TreeNode p=s1.pop(); aList2.add(p.val); if(p.left!=null) s2.add(p.left); if(p.right!=null) s2.add(p.right); } aList.add(aList2); } else { ArrayList<Integer> aList2=new ArrayList<Integer>(); while(!s2.isEmpty()){ TreeNode p=s2.pop(); if(p.right!=null) s1.add(p.right); if(p.left!=null) s1.add(p.left); aList2.add(p.val); } aList.add(aList2); } } return aList; }}
阅读全文
0 0
- 按之字形顺序打印二叉树(Java实现)
- 按之字形顺序打印二叉树java实现
- 按之字形顺序打印二叉树 java
- 剑指offer-----按之字形顺序打印二叉树(java版)
- 按之字形顺序打印二叉树(java版)
- 按之字形顺序打印二叉树
- 按之字形顺序打印二叉树
- 按之字形顺序打印二叉树
- 按之字形顺序打印二叉树
- 按之字形顺序打印二叉树
- 牛客网 | 按之字形顺序打印二叉树
- 按之字形顺序打印二叉树
- 按之字形顺序打印二叉树
- 55.按之字形顺序打印二叉树
- 按之字形顺序打印二叉树
- 按之字形顺序打印二叉树
- 按之字形顺序打印二叉树
- 按之字形顺序打印二叉树
- Delphi读写注册表
- Spring Boot系列(九):定时任务
- Appium环境搭建(Windows版)
- 动态添加view,文字过多不显示问题
- Spring学习笔记2——高级特性
- 按之字形顺序打印二叉树java实现
- HTTP中Get与Post的区别
- c++ linux pthread函数
- linux常用命令大全
- 在Web.xml中自动扫描Spring的配置文件及resource时classpath*:与classpath:的区别
- jetbrains全系列破解
- UNIX操作系统第二章
- pkg-config与多版本opencv安装
- 第七周项目3-负数把正数赶出队列