⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 paixushu.cpp

📁 通过调用函数
💻 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 + -