用c++ 实现的二叉排序树(含源代码)[2]

[入库:2005年8月19日] [更新:2007年3月24日]

本文简介:选择自 lzq_student 的 blog

     
   }
}
}
}

treenode* bisorttree::searchparent(treenode* head,treenode* p)
{


if(head->left==p||head->right==p||head==p||head==null)
return head;
    else
{
if(p->key<head->key)
return searchparent(head->left ,p);
else
return searchparent(head->right ,p);


}


}

treenode* bisorttree::searchminright(treenode* head)//找到右子树中最小的节点
{


if(head->left ==null||head==null)
{
return head;

}
else
{
return searchminright(head->left);

}



}

/*****************以下是显示一个二叉排序树****************************************/
void bisorttree::desplaytree(void)
{

showtree(head);
cout<<endl;
}
void bisorttree::showtree(treenode* head)
{

if(head!=null)
{
showtree(head->left ) ;

    cout<<head->key<<' ' ;

showtree(head->right) ;

}


}





/*****************以下是删除一棵整二叉排序树************************************/
bisorttree::~bisorttree()
{
cout<<"已经消除了一棵树!!!!"<<endl;
destroytree(head);
}
void bisorttree::destroytree(treenode* head )
{

if(head!=null)
{
destroytree(head->left );
destroytree(head->right );
delete head;

}

}

/*********************/
void print()
{

    cout<<endl<<endl<<"以下是对二叉排序树的基本操作:"<<endl
<<"1.显示树"<<endl
    <<"2.插入一个节点"<<endl
<<"3.寻找一个节点"<<endl
<<"4.删除一个节点"<<endl;
}

void main()
{
bisorttree tree;
    int number;
int choicenumber;
    char flag;
while(1)
{
       print() ;  

   cout<<"请选择你要进行的操作(1~4)"<<endl;
   cin>>choicenumber;
   switch(choicenumber)
   {
          case 1:  
          tree.desplaytree();break;
              case 2:
          cout<<"请插入一个数: "<<endl;
                  cin>>number;
              tree.inserttree(number);
                  tree.desplaytree();
          break;
   
              case 3:
              cout<<"请插入你要找数: "<<endl;
          cin>>number;  
                  if(tree.searchtree(number)==null)
  {
                cout<<"没有发现"<<endl;
  }
                  else
  {
  
                    cout<<"发现"<<endl;
  
  }
          break;

         case 4:
          cout<<"请输入你要删除的数: "<<endl; 
          cin>>number;
              tree.deletetree(number);
                  tree.desplaytree();
          break;

        default: break;
   }
      cout<<"你是否要继续(y/n)?"<<endl;
      cin>>flag;
  if(flag=='n'||flag=='n')
break;



}

本文关键:用c++ 实现的二叉排序树(含源代码)
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top