二叉树建立排序遍历插入删除源代码C语言 第2页
各模块流程图及伪码算法
伪码算法
(1) 二叉排序树结点的查找
二叉排序树中查找元素的过程,节点有三个成员:data,left,right。其查找的方法是:首先与树的根节点的元素值进行比较:若相等则找到,返回此结点的地址;若要查找的元素小于根节点的元素值,则指针指向此结点的左子树,继续查找;若要查找的元素大于根节点的元素值,则指针指向此结点的游子树,继续查找。直到指针为空,表示此树中不存在所要查找的元素。
int tree_searchnode(bistree root,int key)
{
毕业论文
http://www.751com.cn while(pointer!=NULL)
{
counter++;
if(pointer->data<key)
pointer=pointer->right;
else if(pointer->data>key)
pointer=pointer->left;
else if(pointer->data==key)本文来自辣~文*论/文|网
return (printf("\n找到结点,删除成功!"));
}
return (printf("\n不能找到这个结点!%d",key));
}
(2) 二叉排序树结点的插入
二叉排序树插入元素的过程,当二叉排序树T中不存在关键字等于e.key的数据元素时,插入e并返回TURE,否则返回FALSE。若查找不成功,以被插结点为新的根结点,被插结点*S为左孩子,被插结点*N为右孩子,然后继续,直到树中已有关键字相同的结点。
bistree newinsert(bistree root,int key)
{
bistree p,q,newnode;
q=p=root;
while(p!=NULL)
{
if(p->data<key){q=p;p=p->right;}
else if(p->data>key){q=p;p=p->left;}
else if(p->data==key){printf("\nSearch success!");break;}
}
if(p==NULL)
{ newnode=(bistree)malloc(sizeof(treenode));
newnode->data=key;
newnode->right=NULL;
newnode->left=NULL;
if(q->data>key)q->left=newnode;
else q->right=newnode;
printf("\n插入新结点成功!");
getch();
}
return root;
}
(3) 二叉排序树结点的删除
二叉排序树删除元素的过程,从二叉排序树中删除结点*P,并重接它的左或右子树,如果右子树空则只需重接它的左子树,否则只需重接它的右子树。当它左右子树均不空,先转左,然后向右到尽头。以S指向被测结点的“前驱”来重接*P的右子树,再接*P的左子树,然后删除。
bistree _delete(bistree root,int key
{
bistree p,q,s;
p=root;
q=NULL;
while (p!=NULL && p->data!=key)
if(key<p->data)
{
q=p;
p=p->left;
本文来自辣~文*论/文|网
p=p->right;
}
if(p==NULL)
printf("不能找到该结点 %d \n",key);
else if(p->left==NULL)
毕业论文
http://www.751com.cn q->right=p->right;
free(p);
}
else if(p->right==NULL) {
if(q==NULL)
root=p->right;
else if(q->left==p)
q->left=p->right;
else
q->right=p->right;
free(p);
}
else
{
s=p->left;
while(s->right!=NULL)
s=s->right;
s->right=p->right;
if(q==NULL)
root=p->left;
else if(q->left==p)
上一页 [1] [2] [3] 下一页
二叉树建立排序遍历插入删除源代码C语言 第2页下载如图片无法显示或论文不完整,请联系qq752018766