- 代码:
import java.io.*;
import java.util.LinkedList;
import java.util.Scanner;
import java.lang.String;
public class BinaryTree<T>
{ private TreeNode<String> root;
private String preOrder;
private String inOrder;
private String postOrder;
private LinkedList<String> preOrderList;
private LinkedList<String> inOrderList;
public BinaryTree()
{root=null;
preOrderList = new LinkedList<String>();
inOrderList = new LinkedList<String>();}
public void print()
{ System.out.println(preOrder);
System.out.println(inOrder);}
public void scan()throws IOException
{ Scanner s = new Scanner(new File("input0"));
if(s.hasNext())
{ preOrder = new String(s.next());
inOrder = new String(s.next());
}
while(preOrder.length()>0)
{preOrderList.add(preOrder.substring(0,1));
preOrder = preOrder.substring(1);}
while(inOrder.length()>0)
{inOrderList.add(inOrder.substring(0,1));
inOrder = inOrder.substring(1);}
}
public String insertElements(LinkedList <String>pre, LinkedList <String>in, TreeNode roots)
{if(pre.size()<=0 || in.size()<=0)
return postOrder;
String element = pre.removeFirst();
int index =-1;
for(int x =0; x<in.size(); x++)
{if(element.equals(in.get(x)))
index=x;}
if(index<0)
return postOrder;
LinkedList<String> left = new LinkedList<String>();
LinkedList<String> right = new LinkedList<String>();
for(int x=0; x<index; x++)
{left.add(new String(in.get(x)));}
for(int x=index+1; x<in.size(); x++)
{right.add(new String(in.get(x)));}
TreeNode <String>leftNode = null;
TreeNode <String>rightNode = null;
roots = new TreeNode<String>(element);
insertElements(pre, left, leftNode);
insertElements(pre, right, rightNode);
roots.setLeft(leftNode);
roots.setRight(rightNode);
return postOrder=postOrder+roots.getValue();
}
public void fill()
{
String post=insertElements(preOrderList, inOrderList, root);
post = post.substring(4,post.length());
System.out.println(post);
}
public void print2()
{System.out.println(root.getValue());}
public class TreeNode<T>
{private T element;
private TreeNode left;
private TreeNode right;
public TreeNode(T object){
element = object;
left = null;
right = null;}
public TreeNode(T object, TreeNode tempLeft, TreeNode tempRight){
element = object;
left = tempLeft;
right = tempRight;}
public T getValue(){
return element;}
public TreeNode getLeft(){
return left;}
public TreeNode getRight(){
return right;}
public void setValue(T theValue){
element = theValue;}
public void setLeft(TreeNode theLeft){
left = theLeft;}
public void setRight(TreeNode theRight){
right = theRight;}
}
public static void main(String args[])throws IOException
{BinaryTree<String> tree = new BinaryTree<String>();
tree.scan();
tree.fill();
tree.print2();
}
}
别忘了TreeNode,上面那个code里已经有treeNode,下面这个可以用来种新树!
- 代码:
public class TreeNode<T>
{private T element;
private TreeNode left;
private TreeNode right;
public TreeNode(T object){
element = object;
left = null;
right = null;}
public TreeNode(T object, TreeNode tempLeft, TreeNode tempRight){
element = object;
left = tempLeft;
right = tempRight;}
public T getValue(){
return element;}
public TreeNode getLeft(){
return left;}
public TreeNode getRight(){
return right;}
public void setValue(T theValue){
element = theValue;}
public void setLeft(TreeNode theLeft){
left = theLeft;}
public void setRight(TreeNode theRight){
right = theRight;}
}
作者:本人