二叉排序树

BiSortTree.h    //----------------------------------------------------头文件

#include<stdio.h>
#include<malloc.h>
typedef int KeyType;

typedef struct
{
	KeyType key;
}DataType;
typedef struct node
{
	DataType data;
	struct node *leftChild;
	struct node *rightChild;
}BiTreeNode;
int Search(BiTreeNode *root, DataType item)
{
	BiTreeNode *p;
	if(root != NULL)
	{
		p = root;
		while(p != NULL)
		{
			if(p->data .key  == item.key )
				return 1;
			if(item.key  > p->data .key)
				p = p->rightChild;
			else
				p = p->leftChild ;
		}
	}
	return 0;
}
int Insert(BiTreeNode **root,DataType item)
{
	BiTreeNode *current,*parent = NULL,*p;
	current = *root;
	while(current !=NULL)
	{
		if(current->data.key  == item.key )
			return 0;
		parent = current;
		if(current->data .key  < item.key )
			current = current->rightChild ;
		else
			current = current->leftChild ;
	}
	p = (BiTreeNode *)malloc(sizeof(BiTreeNode));
	p->data  = item ;
	p->leftChild  = NULL;
	p->rightChild  = NULL;
	if(parent == NULL)
		*root = p;
	else if(item.key  < parent->data .key )
		parent->leftChild  = p;
	else
		parent->rightChild  = p;
	return 1;
}


BiSortTree.cpp   //---------------------------------------------------------------源文件

#include"BiSortTree.h"

void InTraverse(BiTreeNode *root)
{
	if(root == NULL)
		return;
	if(root->leftChild != NULL)
		InTraverse(root->leftChild);
	printf("%d  ",root->data.key);
	if(root->rightChild != NULL)
		InTraverse(root->rightChild);
}
void main()
{
	DataType test[] = {4,5,7,2,1,9,8,11,3},x = {9};
	int n = 9,i,s;
	BiTreeNode *root = NULL;
	for(i = 0;i<n;i++)
	{
		Insert(&root,test[i]);
	}
	InTraverse(root);
	s = Search(root,x);
	if(s == 1)
		printf("\n数据元素%d存在!\n",x.key);
	else
		printf("\n数据元素不存在!\n");
}


结果:

1 2 3 4 5 7 8 9 11

数据元素9存在!

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值