先序、中序构造一棵唯一的二叉树
来源:互联网 发布:淘宝客成交家信誉吗 编辑:程序博客网 时间:2024/06/06 05:46
直接上代码:
public class BinaryTree{public BinaryTree(String pre,String in){makeTree(pre,in);}public static void main(String[] args){BinaryTree tree=new BinaryTree("ABDCEGFHI","DBAEGCHFI");tree.preOrder();}public void preOrder(){preOrder(this.root);}public void preOrder(BinaryTreeNode n){if(n!=null){visitNode(n);preOrder(n.left);preOrder(n.right); }}private void visitNode(BinaryTreeNode n){if(n!=null) System.out.println(n.ele);}private void makeTree(String pre,String in){if(pre!=null){root=new BinaryTreeNode(null,pre.charAt(0),null);if(pre.length()==1) return;int pareIndex=in.indexOf(pre.charAt(0));if(pareIndex>0&&pareIndex<in.length()-1){ makeTree(certainNode(pre.substring(1,pareIndex+1)),in.substring(0,pareIndex),root,true); makeTree(certainNode(pre.substring(pareIndex+1)),in.substring(pareIndex+1),root,false); } else if(pareIndex==0) {makeTree(certainNode(pre.substring(1)),in.substring(1),root,false);}else{makeTree(certainNode(pre.substring(1)),in.substring(1,pareIndex-1),root,true);} }}private void makeTree(String pre,String in,BinaryTreeNode pare,boolean isL){ //~ String s="pre : "+pre+" in : "+in+" right or left :"+((isL)?"left":"right"); //~ System.out.println(s); BinaryTreeNode parent=null; if(pre==null) return; if(isL) parent=pare.left=new BinaryTreeNode(null,pre.charAt(0),null); else parent=pare.right=new BinaryTreeNode(null,pre.charAt(0),null); if(pre.length()==1) return; int pareIndex=in.indexOf(pre.charAt(0)); if(pareIndex>0&&pareIndex<in.length()-1) { makeTree(certainNode(pre.substring(1,pareIndex+1)),in.substring(0,pareIndex),parent,true); makeTree(certainNode(pre.substring(pareIndex+1)),in.substring(pareIndex+1),parent,false); } else if(pareIndex==0) { makeTree(certainNode(pre.substring(1)),in.substring(pareIndex+1),parent,false); } else { makeTree(certainNode(pre.substring(1)),in.substring(0,pareIndex),pare.left,true); }}private String certainNode(String s){if(s.length()==0) return null;else return s;}private BinaryTreeNode root;private BinaryTreeNode curr; private class BinaryTreeNode{public BinaryTreeNode left;public BinaryTreeNode right;Object ele;BinaryTreeNode(BinaryTreeNode l,Object o,BinaryTreeNode r){left=l;right=r;ele=o;}}}
- 先序、中序构造一棵唯一的二叉树
- 二叉树 二叉树带虚结点表示的先序遍历可以确定唯一一颗二叉树
- 第十周项目一 二叉树构造算法的验证---先序和中序序列构造二叉树(2)
- 第十一周项目一 验证算法(2)二叉树构造算法的验证(先序和中序)
- JAVA二叉树,给出先序遍历和中序遍历,构造出新的二叉树
- 数组实现根据二叉树的先序遍历和中序遍历构造二叉树
- 由先序遍历和中序遍历构造二叉树的二叉链表代码
- 二叉树构造 (已知先序 和中序)
- 输入先序和中序构造二叉树
- 根据先序 中序构造二叉树
- 先序和后序构造二叉树,后序和中序构造二叉树
- 前序遍历和中序遍历序列能确定唯一的一棵二叉树
- 数据结构之 二叉树的构造与遍历(先序,中序,后序,层次)
- 通过树的先序和中序遍历序列来构造二叉树
- 先序构造二叉树(1)
- Java先序序列构造二叉树
- 已知一棵二叉树的中序遍历和后序遍历,求二叉树的先序遍历
- 已知一棵二叉树的中序遍历和后序遍历,求二叉树的先序遍历
- IaaS SaaS和PaaS
- OpenGL: 多边形分格化 和 gluTessCallback() 函数在c++中的使用方法
- win7下安装NetBeans找不到jdk的处理方法
- 通过Xcode将项目同步到GitHub上
- PAL制视频信号
- 先序、中序构造一棵唯一的二叉树
- 如何在UIAlertView中显示进度条
- AForge学习笔记(8):AForge.Imaging.ColorReduction
- 付费应用美国区2012-09统计
- linux下python常用插件安装
- How to Run MSTest.exe in Destination PC without be installed VS IDE
- 字符串NSString中去掉空格
- Android的线程使用来更新UI----Thread、Handler、Looper、TimerTask等
- 什么是饱和失真?什么是截止失真?