二叉排序树

#include<stdio.h>
#include<stdlib.h>
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define OVERFLOW 0
typedef int Status;
typedef struct BiTNode
{
	int data;
	struct BiTNode *lchild;
	struct BiTNode *rchild;
}BiTNode,*BiTree;
Status InOrderTraverse(BiTree T){
	if(!T)
	{
	return ERROR;}
		InOrderTraverse(T->lchild);
		printf("%d  ",T->data);
		InOrderTraverse(T->rchild);
		
	
   
}
BiTree  insert_BiTree(int s,BiTree T)
{
	BiTree  p;
	if(!T)
		{
			p=(BiTNode *)malloc(sizeof(BiTree));
			p->data=s;
			p->rchild=NULL;
			p->lchild=NULL;
			return p;
		}
	else if(s<T->data)
	{
	  T->lchild=insert_BiTree(s,T->lchild);
	}
	else if (s>T->data)
	{
	T->rchild=insert_BiTree(s,T->rchild);
	}
	return T;
}
BiTree  Create(BiTree T){
	int data;
	scanf("%d",&data);
	
}
int  Delete(int m,BiTree &T){
	BiTree s;
	if (T==NULL)
	{
		printf("没有%d结点。",m); 
	return ERROR;}
		else if(T->data==m)
		{
			if(T->lchild==NULL && T->rchild==NULL)
			T=NULL;
			else if (T->lchild!=NULL && T->rchild==NULL)
			{
				T=T->lchild;
			}
			else if (T->lchild==NULL && T->rchild!=NULL)
			{
				T=T->rchild;
			}
			else 
			{
				s=T->lchild;
				while(s->rchild)
				{
					s=s->rchild;	
				}
				s->rchild=T->rchild;
				T=T->lchild;
			}
			return OK;
		}
		else if(T->data<m)
		 {
		 	return Delete(m,T->rchild);
		 }
		else if(T->data>m)
		 {
		 	return Delete(m,T->lchild);
		 }
}
int main(){
	BiTree T;
	int n,num[100],i=0,del;
	scanf("%d",&n);
	T=(BiTNode *)malloc(sizeof(BiTree));
	T->lchild=T->rchild=NULL;
	scanf("%d",&num[i]);
	T->data=num[i];
	for(i=1;i<n;i++)
	{scanf("%d",&num[i]);
	T=insert_BiTree(num[i],T);}
	scanf("%d",&del);	
	printf("原始数据:");
	for(i=0;i<n;i++)
		printf("%d ",num[i]);
	printf("\n");	
	printf("中序遍历结果:");
	InOrderTraverse(T);
	printf("\n");
	printf("删除结点后结果:");
	
	if(Delete(del,T))
	InOrderTraverse(T);
	printf("\n");
	return OK;
	
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值