#include <iostream>
#include <stdio.h>
#include <stdlib.h>
typedef int KeyType;
typedef struct BSTNode{
KeyType key;
struct BSTNode *lchild,*rchild;
}BSTNode,*BiTree;
//递归
int BST_Insert(BiTree &T,KeyType k)
{
if(NULL==T)
{
//为新结点申请空间,第一个作为树根,后面递归再进入的不是树根,是为叶子结点
T= (BiTree)calloc(1,sizeof(BSTNode) );
T->key=k;
return 1;
} else if(k==T->key)
return 0;//发现相同元素,不插入,考研不考
else if(k<T->key)
return BST_Insert(T->lchild,k);
else
return BST_Insert(T->rchild,k);
}
void Creat_BST(BiTree &T,KeyType *str,int n)
{
T=NULL;//T是树根
int i=0;
while (i<n)
{
BST_Insert(T,str[i]);//把某一个结点放入二叉树
i++;
}
}
void InOrder(BiTree T)
{
if(T!=NULL)
{
InOrder(T->lchild);
printf("%3d",T->key);
InOrder(T->rchild);
}
}
BSTNode *BST_Search(BiTree T,KeyType key,BiTree &p)
{
p=NULL;
while (T!=NULL&&key!=T->key)
{
p=T;
if (key<T->key)
T=T->lchild;
else
T=T->rchild;
}
return T;
}
int main() {
BiTree T=NULL;//树根
BiTree parent;//存储父亲结点的地址值
BiTree search;
KeyType str[7]={54,20,66,40,28,79,58};
Creat_BST(T,str,7);
InOrder(T);
printf("\n");
search= BST_Search(T,41,parent);
if(search)
{
printf("find key %d\n",search->key);
} else
{
printf("not found\n");
}
return 0;
}
算法:数据结构二叉排序树的建立和查找
最新推荐文章于 2025-07-16 21:16:22 发布
文章介绍了如何在C语言中使用递归实现二叉搜索树(BST)的数据结构,包括BST的插入、查找功能以及中序遍历方法,展示了如何创建一个BST并进行操作。

6968

被折叠的 条评论
为什么被折叠?



