实现的操作:
TreeNode* BST_tree(TreeNode *T,int key); //二叉排序树查找
void BST_insert(TreeNode **T,int key); //创建二叉排序树
void PreOrder(TreeNode *T); //遍历
定义结构体:
typedef struct TreeNode
{
char val; //存储数据
struct TreeNode *lchild; //左孩子
struct TreeNode *rchild; //右孩子
}TreeNode;
创建二叉排序树:
void BST_insert(TreeNode **T,int key)
{
if(*T == NULL)
{
*T = (TreeNode *)malloc(sizeof(TreeNode));
(*T)->val = key;
(*T)->lchild = NULL;
(*T)->rchild = NULL;
}
else if(key == (*T)->val)
{
return ;
}
else if(key < (*T)->val)
{
BST_insert(&((*T)->lchild),key);
}
else
{
BST_insert(&((*T)->rchild),key);
}
}
二叉排序树查找:
TreeNode *BST_tree(TreeNode *T,int key)
{
if(T)
{
if(T->val == key)
return T;
else if(key < T->val)
{
return BST_tree(T->lchild,key);
}
else
{
return BST_tree(T->rchild,key);
}
}
else
{
return NULL;
}
}
主函数:
void main()
{
TreeNode *T = NULL;
int nums[6] = {4,5,19,23,2,8};
for(int i = 0;i < 6;i++)
{
BST_insert(&T,nums[i]);
}
PreOrder(T);
printf("\n");
TreeNode *node = BST_tree(T,23);
if(node == NULL)
{
printf("未找到\n");
}
else
{
printf("查找到的结果为:%d\n",node->val);
}
system("pause");
return ;
}
测试结果:
声明:此文章为学习笔记,如有侵权请联系删除。