毕业论文论文范文课程设计实践报告法律论文英语论文教学论文医学论文农学论文艺术论文行政论文管理论文计算机安全
您现在的位置: 毕业论文 >> 论文 >> 正文

二叉树建立排序遍历插入删除源代码C语言 第2页

更新时间:2010-7-30:  来源:毕业论文
二叉树建立排序遍历插入删除源代码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
设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©751com.cn 辣文论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。