个人想的一种建立二叉树的方法,先创建节点,节点保存到节点数组中,通过下标来建立父子关系。感觉问题很多,二叉树的定义是递归的那么创建二叉树的方式也应该是递归的。不知道这样想对不对,上面所用到的方法是本人想了一天的结果,实在是想不到其他的方法了,明天准备看看标准的方法是什么。今天先把自己的想法提出了。臆想中的二叉树的结构为:
具体的代码如下:
public class BiTree{
BiTreeNode [] BNode = new BiTreeNode[10];
public static class BiTreeNode{
BiTreeNode Left;
BiTreeNode Right;
int data;
BiTreeNode(int data){
Left = null;
Right = null;
this.data = data;
}
}//二叉树的节点
public void CreateBiTree(){
for(int i=1;i<10;i++){
BNode[i] = new BiTreeNode(i);
}
for(int j=1;j*2<10;j++){
BNode[j].Left = BNode[j*2];
if(j*2+1<10){
BNode[j].Right = BNode[j*2+1];
}//endif
}//endfor
}
public void OutputTree(){
for(int k=1;k<5;k++){
if((k*2+1)<10){
System.out.println("节点"+k+"的左孩子为:"+BNode[k].Left.data
+"右孩子为:"+BNode[k].Right.data);
}
}
}
}
测试代码为:
public class BiTreeTest{
public static void main(String[]args){
BiTree bt = new BiTree();
bt.CreateBiTree();
bt.OutputTree();
}
}
运行结果为: