我根据严蔚敏遍的《数据结构》里有关平衡二叉树的算法写了程序。 /*插入节点的算法*/ int InsertAVL(BSTree T,int e,int *taller) { if(T==NULL) { T=(BSTree)malloc(sizeof(BSTNode)); T->data=e; T->lchild=T->rchild=NULL; T->bf=EH; *taller=TRUE; } else { if(e<T->data) { if(!InsertAVL(T->lchild,e,taller)) return 0; if(taller) { switch(T->bf) { case LH: LeftBalance(T);*taller=FALSE;break; case EH: T->bf=LH;*taller=TRUE;break; case RH: T->bf=EH;*taller=FALSE;break; } } } else { if(!InsertAVL(T->lchild,e,taller)) return 0; if(taller) { switch(T->bf) { case LH: T->bf=EH;*taller=FALSE;break; case EH: T->bf=RH;*taller=TRUE;break; case RH: RightBalance(T);*taller=FALSE;break; } } } } return 1; } 树的结构: struct Tree { int data; int bf; struct Tree *lchild,*rchild; }; typedef struct Tree BSTNode; typedef BSTNode *BSTree; 相关宏: #define LH +1 #define EH 0 #define RH -1 #define TRUE 1 #define FALSE 0 我现在的主函数 void main() { BSTree root=NULL;/*根节点*/
int nodelist[5]={4,3,5,2,6}; int taller,i=0; while(i<5) { if(InsertAVL(root,nodelist[i],&taller)) { root=Return(root); i++; } else break; } PreOrder(root);/*打印树*/ }
现在我的程序里,主函数里的root的值都是空的,各位大哥帮我看看,怎样把InsertAVL()这个函数里的T的值传给root?谢谢了!!!!