package bintree;
//二叉树Java实现
import java.util.ArrayList;
import java.util.List;
public class BinTree {
private BinTree lChild;
private BinTree rChild;
private BinTree root;
private Object data;
private List<BinTree> datas;
public BinTree(BinTree lChild, BinTree rChild, Object data) {
super();
this.lChild = lChild;
this.rChild = rChild;
this.data = data;
}
public BinTree(Object data){
this(null , null , data);
}
public BinTree() {
super();
}
public void createTree(Object[] objs){
datas = new ArrayList<BinTree>();
for (Object object:objs){
datas.add(new BinTree(object));
}
root = datas.get(0);//第一个元素为根节点;
for(int i= 0;i< objs.length/2;i++){
datas.get(i).lChild = datas.get(2*i+1);
if(i*2+2<datas.size()){
datas.get(i).rChild = datas.get(2*i+2);
}
}
}
//先序遍历
public void preorder(BinTree root){
if(root!=null){
visit ( root.getData());
preorder( root.lChild);
preorder( root.rChild);
}
}
//中序遍历
public void order(BinTree root){
if(root!=null){
order(root.lChild);
visit(root.getData());
order(root.rChild);
}
}
//后序遍历
public void posorder(BinTree root){
if(root!=null){
posorder(root.lChild);
posorder(root.rChild);
visit(root.getData());
}
}
public void visit(Object obj) {
System.out.print(obj+" ");
}
public BinTree getRoot() {
return root;
}
public Object getData() {
return data;
}
}
数据结构
最新推荐文章于 2021-07-29 12:43:51 发布