📄 paixushu.cpp
字号:
#include<stdio.h>
#include<string.h>
#include<malloc.h>
#define MAX_TREE_SIZE 100
#define BST_SIZE 20
#define ERROR 0
#define OK 1
#define OVERFLOW -1
#define EQ(a,b) ((a)==(b))
#define LT(a,b) ((a)<(b))
#define LQ(a,b) ((a)<=(b))
typedef struct BiTNode{
int data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
typedef int Status;
Status CreateBST(BiTree *T){
int a,b,i;
printf("请输入结点个数:");
scanf("%d",&b);
for(i=1;i<=b;i++)
{ printf("请输入结点数:");
scanf("%d",&a);}
if (!((*T) =(BiTree)malloc(sizeof(BiTNode)))) return OVERFLOW;
(*T)->data=a;
CreateBST(&((*T)->lchild));
CreateBST(&((*T)->rchild));
return OK;
}
Status SearchBST(BiTree T,int e,BiTree f,BiTree *p){
if (!T) {(*p)=f;return ERROR;}
else if EQ(e,T->data) {(*p)=T;return OK;}
else if LT(e,T->data) return SearchBST(T->lchild,e,T,p);
else return SearchBST(T->rchild,e,T,p);
}
Status InsertBST(BiTree *T,int e){
BiTree p;
BiTree s;
if (!SearchBST(*T,e,NULL,&p)){
s=(BiTree)malloc(sizeof(BiTNode));
s->data=e; s->lchild=s->rchild=NULL;
if (!p) (*T)=s;
else if LT(e,p->data) p->lchild=s;
else p->rchild=s;
return OK;
}
else return ERROR;
}
Status DeleteBST(BiTree *T, BiTree *p){
BiTree *q,s;
if(!(*p)->rchild){
q=p; (*p)=(*p)->lchild; free(q);
}
else if(!(*p)->lchild){
q=p; (*p)=(*p)->rchild; free(q);
}
else{
q=p; s=(*p)->lchild;
while(s->rchild) {*q=s;s=s->rchild;}
(*p)->data=s->data;
if(q!=p) (*q)->rchild=s->lchild;
else (*q)->lchild=s->lchild;
delete s;
}
return OK;
}
void main(){
int i,j,a,e,n;
BiTree T,f,p;
printf("请输入所选择的函数:\n");
printf("1.CreateBST; 2.SearchBST; 3.InsertBST; 4.DeleteBST;\n");
scanf("%d",&j);
switch(j) {
case 1: CreateBST(&T);
printf("二叉树为:");
for(i=0;i<n;i++) {printf("%d",a);}
break;
case 2: printf("请输入要查找的元素:");
scanf("%d",&e);
SearchBST(T,e,f,&p);
printf("元素的位置为:%d",*p);
break;
case 3: printf("请输入要插入的元素:");
scanf("%d",&e);
InsertBST(&T,e);
printf("插入后的二叉树为:");
for(i=0;i<n+1;i++) {printf("%d",a);}
break;
case 4: printf("请输入要删除的元素:");
scanf("%d",&e);
DeleteBST(&T,&p);
printf("删除后的二叉树为:");
for(i=0;i<n-1;i++) {printf("%d",a);}
break;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -