已知树的前序、中序,求后序的java实现&已知树的后序、中序,求前序的java实现
2013-10-03 22:44
387 查看
public class Order { int findPosInInOrder(String str,String in,int position){ char c = str.charAt(position); int length = in.length(); for(int i=0;i<length;i++){ if(c==in.charAt(i)) return i; } return -1; } /** * 已知前序和中序,求后序 * @param preOrder * @param inOrder */ void postOrder(String preOrder,String inOrder,int length){ if(1==length){ System.out.println(inOrder); return; } if(0==length){ return; } int index = findPosInInOrder(preOrder, inOrder,0); String inOrder_left = inOrder.substring(0,index); String inOrder_right = inOrder.substring(index+1); String preOrder_left = preOrder.substring(1,1+index); String preOrder_right = preOrder.substring(index+1); postOrder(preOrder_left,inOrder_left,inOrder_left.length()); postOrder(preOrder_right,inOrder_right,inOrder_right.length()); System.out.println(preOrder.charAt(0)); } /** * 已知后序、中序,求先序 * @param postOrder * @param inOrder * @param length */ void preOrder(String postOrder,String inOrder,int length){ if(1==length){ System.out.println(inOrder); return; } if(0==length){ return; } int index = findPosInInOrder(postOrder, inOrder,postOrder.length()-1); String inOrder_left = inOrder.substring(0,index); String inOrder_right = inOrder.substring(index+1); String postOrder_left = postOrder.substring(0,index); String postOrder_right = postOrder.substring(index+1,postOrder.length()-1); System.out.println(postOrder.charAt(postOrder.length()-1)); preOrder(postOrder_left,inOrder_left,inOrder_left.length()); preOrder(postOrder_right,inOrder_right,inOrder_right.length()); } public static void main(String args[]){ Order order= new Order(); String pre="ABDEC"; String in="DBEAC"; String post = "DEBCA"; order.postOrder(pre, in, in.length()); System.out.println("********************************"); order.preOrder(post, in, in.length()); } }
注意输出语句的顺序
相关文章推荐
- 已知树的前序、中序,求后序的java实现&已知树的后序、中序,求前序的java实现
- 已知树的前序、中序,求后序的c++实现&已知树的后序、中序,求前序的c++实现
- 已知树的前序、中序,求后序的c++实现&已知树的后序、中序,求前序的c++实现
- LDAP学习笔记<四>jldap实现Java对LDAP的基本操作
- java-用两个栈实现队列&&用两个队列实现一个栈
- java'实现文件夹跨驱动器的拷贝
- Java连接MySQL数据库实现用户名密码的验证方法 Java语句中sql查询语句'' ""作用
- 修正单纯形法·优化算法实现·Java
- JS&Java实现常见算法面试题
- 数组问题之一维最大字段和问题<Java实现>
- 【Dubbo&&Zookeeper】4、 Java实现Dubbo服务提供者及消费者注册
- Java Thread&Concurrency(13): 深入理解ConcurrentLinkedQueue及其实现原理
- 数据结构Java实现07----队列:顺序队列&顺序循环队列、链式队列、顺序优先队列
- C#和Java实现互通的RSA&DES加解密算法(一)
- 二叉树的遍历问题-----Java实现(中序、前序、后序、遍历)
- Python&Java实现支付宝第三方支付接入
- Java实现二叉树的前序、中序、后序遍历(递归方法)
- java实现 二叉树的深度&判断二叉树是否是平衡二叉树
- Java实现二叉树的前序、中序、后序、层序遍历(非递归方法)
- 逻辑回归(LR)算法java实现<转>