接口
#include <stdio.h>
#include <stdlib.h>
typedef struct treeNode
{
char data;
struct treeNode* lchild;
struct treeNode* rchild;
}treeNode;
void bstSearch(treeNode* T, int data);
void bstInsert(treeNode** T, int data);
void preOrder(treeNode* T);
接口实现
#include "bst.h"
void bstSearch(treeNode* T, int data)
{
if (T) {
if (T->data == data) {
return T;
}
else if (data < T->data) {
return bstSearch(T->lchild, data);
}
else {
return bstSearch(T->rchild, data);
}
}
else {
return NULL;
}
}
void bstInsert(treeNode** T,int data)
{
if (*T == NULL)
{
*T = (treeNode*)malloc(sizeof(treeNode));
(*T)->data = data;
(*T)->lchild = NULL;
(*T)->rchild = NULL;
}
else if ((*T)->data < data)
{
bstInsert(&(*T)->rchild, data);
}
else if ((*T)->data > data)
{
bstInsert(&(*T)->lchild, data);
}
else
{
return;
}
}
void preOrder(treeNode* T)
{
if (T)
{
printf("%d ", T->data);
preOrder(T->lchild);
preOrder(T->rchild);
}
}
测试
#include "bst.h"
int main()
{
treeNode* T = NULL;
int num[6] = { 20,1,3,45,22,66 };
for (int i = 0; i < 6; i++)
{
bstInsert(&T, num[i]);
}
preOrder(T);
return 0;
}
