标题:关于平衡二叉树的问题!谢谢了!
只看楼主
zz8255
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2005-1-19
 问题点数:0 回复次数:1 
关于平衡二叉树的问题!谢谢了!

我根据严蔚敏遍的《数据结构》里有关平衡二叉树的算法写了程序。 /*插入节点的算法*/ 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?谢谢了!!!!

搜索更多相关主题的帖子: 二叉树 taller int case data 
2005-01-19 11:00
badboyk
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2005-5-8
得分:0 
回复:(zz8255)关于平衡二叉树的问题!谢谢了!
你的insertAVL函数中树根节点采用的是值传递,这样不行,要改成指针或引用传递才行。。
2005-05-08 13:01



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-11496-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.217871 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved