java-从先序遍历和中序遍历重建二叉树
来源:互联网 发布:软件注册过期怎么办 编辑:程序博客网 时间:2024/05/17 01:43
- public class BuildTreePreOrderInOrder {
- /**
- * Build Binary Tree from PreOrder and InOrder
- * _______7______
- / \
- __10__ ___2
- / \ /
- 4 3 _8
- \ /
- 1 11
- */
- public static void main(String[] args) {
- BuildTreePreOrderInOrder build=new BuildTreePreOrderInOrder();
- int[] preOrder = {7,10,4,3,1,2,8,11};
- int[] inOrder = {4,10,3,1,7,11,8,2};
- Node root=build.buildTreePreOrderInOrder(preOrder,0,preOrder.length-1,inOrder,0,preOrder.length-1);
- build.preOrder(root);
- System.out.println();
- build.inOrder(root);
- }
- public Node buildTreePreOrderInOrder(int[] preOrder,int begin1,int end1,int[] inOrder,int begin2,int end2){
- if(begin1>end1||begin2>end2){
- return null;
- }
- int rootData=preOrder[begin1];
- Node head=new Node(rootData);
- int divider=findIndexInArray(inOrder,rootData,begin2,end2);
- int offSet=divider-begin2-1;
- Node left=buildTreePreOrderInOrder(preOrder,begin1+1,begin1+1+offSet,inOrder,begin2,begin2+offSet);
- Node right=buildTreePreOrderInOrder(preOrder,begin1+offSet+2,end1,inOrder,divider+1,end2);
- head.left=left;
- head.right=right;
- return head;
- }
- public int findIndexInArray(int[] a,int x,int begin,int end){
- for(int i=begin;i<=end;i++){
- if(a[i]==x)return i;
- }
- return -1;
- }
- public void preOrder(Node n){
- if(n!=null){
- System.out.print(n.val+",");
- preOrder(n.left);
- preOrder(n.right);
- }
- }
- public void inOrder(Node n){
- if(n!=null){
- inOrder(n.left);
- System.out.print(n.val+",");
- inOrder(n.right);
- }
- }
- class Node{
- Node left;
- Node right;
- int val;
- public Node(int val){
- this.val=val;
- }
- public Node getLeft(){
- return left;
- }
- public Node getRight(){
- return right;
- }
- public int getVal(){
- return val;
- }
- }
- }
网址:http://bylijinnan.iteye.com/blog/1355279
还有一篇博客:http://blog.csdn.net/sgbfblog/article/details/7783935
0 0
- 从先序遍历和中序遍历重建二叉树
- java-从先序遍历和中序遍历重建二叉树
- java-从先序遍历和中序遍历重建二叉树
- 从先序遍历和中序遍历结果重建二叉树
- 前序遍历和中序遍历重建二叉树
- 前序遍历和中序遍历重建二叉树
- 据前序遍历和中序遍历重建二叉树
- 用先序遍历和中序遍历重建二叉树
- 根据前序遍历和中序遍历重建二叉树的Java实现
- 1935. 二叉树重建(根据先序遍历和中序遍历重建二叉树并进行广度优先遍历)
- 通过前序遍历和中序遍历重建二叉树以及输出后序遍历(Java实现)
- 剑指offer 重建二叉树-前序遍历和中序遍历重建
- 已知二叉树的前序遍历和中序遍历重建二叉树(二叉树)
- 已知二叉树的后序遍历和中序遍历重建二叉树(二叉树)
- 由前序遍历和中序遍历重建二叉树,再实现后续遍历
- 一直二叉树的前序遍历和中序遍历的结果,重建该二叉树 Java代码实现
- 根据后序和中序遍历重建二叉树
- 根据先序和中序遍历重建二叉树
- 关于Android 选择相册图片裁剪的坑
- 二、TIPTOP命名原则和目录配置—TIPTOP GP ERP二次开发新手教程
- 2015.6.11 TEST
- Swap Nodes in Pairs
- GRE issue写作6分模板
- java-从先序遍历和中序遍历重建二叉树
- CSS3 transform实现图片投影效果
- MimeType.exe 使 ActiveX 对象标签可以使用Mime type=application
- MVC大型商贸系统(库存管理)技术解释(四) 商品调拨
- HashSet剖析
- xml解析出现的错误
- 插入排序
- javax.ws.rs.core Class UriBuilder
- 链表各类操作详解