首先请看如下什么叫做完全二叉树,本人认为以完全二叉树的方法构建二叉树算比较的简单,易实现。。
下面,我们就按照构建完全二叉树的形式来构建我们的二叉树:
主干代码为:
import java.util.ArrayList;
import java.util.List;
public class BinTree {
private Object data;//存放当前节点的数据
private BinTree lChild;//当前节点的左孩子
private BinTree rChild;//当前节点的右孩纸
private BinTree root;//这是根节点
/**
* 实现各个变量的get,set方法
* @return
*/
public Object getData() {
return data;
}
public void setData(Object data) {
this.data = data;
}
public BinTree getlChild() {
return lChild;
}
public void setlChild(BinTree lChild) {
this.lChild = lChild;
}
public BinTree getrChild() {
return rChild;
}
public void setrChild(BinTree rChild) {
this.rChild = rChild;
}
public BinTree getRoot() {
return root;
}
public void setRoot(BinTree root) {
this.root = root;
}
public BinTree(Object data){
this.data=data;
}
public BinTree(){
}
public void created(Object data[]){//初始化二叉树,将传进来的值创建为二叉树
List <BinTree>list=new ArrayList<BinTree>();//新建一个list集合,将数据变为各个节点
for (Object tempdata :data) {
list.add(new BinTree(tempdata));
}
root=list.get(0);//将第一个元素设置为根节点
/**
* 利用构建完全二叉树的方式构建
*/
for(int i=0;i<list.size()/2;i++){
if((i*2+1)<list.size()){
list.get(i).setlChild(list.get(i*2+1));
}
if((i*2+2)<list.size()){
list.get(i).setrChild(list.get(i*2+2));
}
}
}
public void PreOrder(BinTree root){//利用递归实现前序遍历,输出打印结果
if(root!=null){
System.out.print(" "+root.getData());
PreOrder(root.getlChild());
PreOrder(root.getrChild());
}
}
}
测试代码为:
public class Test{
public static void main(String[] args) {
Object data[]={1,2,3,4,5};
BinTree binTree=new BinTree();
binTree.created(data);//创建二叉树
binTree.PreOrder(binTree.getRoot());//前序遍历结果
}
}
输出结果为:
我们也可以知道,1,2,3,4,5按照构建完全二叉树的方式构建,前序遍历的结果为:1,2,4,5,3。看图中的结果说明我们创建成功。
今天分享就到这里,若有疑问,请call me哦!!!!