package binaryTree;
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) {
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<>();
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 (2*i+2<objs.length){
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 inorder(BinTree root){
if (root!=null){
inorder(root.lChild);
visit(root.getData());
inorder(root.rChild);
}
}
public void afterorder(BinTree root){
if (root!=null){
afterorder(root.lChild);
afterorder(root.rChild);
visit(root.getData());
}
}
private void visit(Object obj){
System.out.print(obj+" ");
}
public BinTree getRoot() {
return root;
}
public Object getData() {
return data;
}
public static void main(String[] args) {
Object[] arr = {0,1,2,3,4,5,6,7};
BinTree b = new BinTree();
b.createTree(arr);
//b.preorder(b.getRoot());
//b.inorder(b.getRoot());
b.afterorder(b.getRoot());
}
}
苏先生数据结构学习之java实现简单二叉树
最新推荐文章于 2024-08-10 15:08:52 发布