if(!num) printf("完成输入!\n");
else insertBST(&T,num);
}while(num);
printf("\n 1: 中序输出");
printf("\n 2: 输入元素");
while(ch==ch)
{
scanf("%d",&ch);
switch(ch){
case 0:
exit(0); /*0--退出*/
case 1:
printf(" 中序遍历输出结果为:\n ");
inorderTraverse(&T); /*1--中序遍历*/
break;
case 2:
printf(" 输入元素x,查找二叉排序树T,若存在含x的结点,则删除该结点,并作中序遍历,否则输出无x :");
scanf("%d",&num); /*3--删除某个结点*/
if(searchBST(T,num,NULL,&p))
{
T=Delete(T,num);
printf(" 删除成功!中序遍历输出:\n ");
inorderTraverse(&T);
-22-
}
else
printf(" 无%d",num);
break;
default:
printf("无此结点\n");
break; /*输入无效字符*/}
}
}
-23-
二叉链表结构c++
#include <iostream>
using namespace std;
class node
{
public:
node(int i):data(i),left(NULL),right(NULL){}
void inorder(node *&root)//中序遍历,符合升序输出
{
if(root!=NULL)
{
inorder(root->left);
cout<<root->data<<' ';
inorder(root->right);
}
}
void insert(node *&ptr,int item) //在查找树中插入元素
{
if(ptr==NULL)
ptr=new node(item);
else if(item<ptr->data)
insert(ptr->left,item);
else insert(ptr->right,item);
}
node *find(node *&ptr,int item) //在查找树中查找元素,找到返回所在结点指针,找不到返回空指针。 {
if(ptr==NULL)
return NULL;
if(ptr->data==item)
return ptr;
else if(item<ptr->data)
find(ptr->left,item);
else find(ptr->right,item);
}
node *&findy(node *&ptr,int item) //在查找树中查找肯定存在的元素,并返回其引用
{
if(ptr->data==item)
return ptr;
else if(item<ptr->data)
findy(ptr->left,item);
-24-
}
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-26533-8.html
司机坐在左边开车艾玛英国拍摄鉴定完毕