+20 c语言- (求)树,二叉树,二叉查找树区别和用他们做的C语言简单编成

[复制链接]
查看11 | 回复1 | 2005-11-5 16:44:12 | 显示全部楼层 |阅读模式
看看数据结构树吧。 比较基本的概念。树,叉就可以多了。 2叉,就是2个了。
查找2叉,忘记了点,好象和索引B+什么有关?呵呵,忘记拉。
回复

使用道具 举报

千问 | 2005-11-5 16:44:12 | 显示全部楼层
二叉树是指结点的度最大为2,也就是一个结点最多只有两个分支。二叉树与度为2的树的区别是二叉树是顺序树,即有严格的左右之分,而度为2的树却没有这种要求。二叉排序树是在二叉树的基础上面将小于结点的分支都放在该结点的左边,而大于该结点的分支都放在右边的树,这样很便于查找。我只给你写了一些主要的函数:structpoint{intdata;structpoint*lchild;structpoint*rchild;};/*建立二叉排序树*/structpoint*creattree(intdata[],intn){inti;structpoint*T;T=NULL;for(i=0;idata=item;p1->lchild=NULL;p1->rchild=NULL;if(T==NULL)T=p1;elseif(T!=NULL){p2=T;while(1){if(itemdata){if(p2->lchild!=NULL)p2=p2->lchild;else{p2->lchild=p1;break;}}else{if(p2->rchild!=NULL)p2=p2->rchild;else{p2->rchild=p1;break;}}}}returnT;}/*对二叉树进行中序遍历,如果一个结点左孩子的值大于它,或者是右孩子的值小于它,则不为顺序树*/intINorder(structpoint*T,intn){structpoint*stack[30];inttop=-1,i=0;structpoint*p;p=T;do{while(p!=NULL){stack[++top]=p;p=p->lchild;}p=stack[top--];if(((p->lchild)->data)>p->data||(p->rchild)->data)data)return0;p=p->rchild;}while(p!=NULL||top!=-1);p=p->rchild;printf("%d",p->data);}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行