???????????????????н????????????????????????????????????——???????????Binary Search Tree????????????????(Binary Sort Tree)?????????BST???????????????????£?
????1.???????????????????????????н??????С??????????????
????2.???????????????????????????н??????????????????????
????3.?????????????????????????
??????????????????????????????????????????????С??????????????? https://github.com/chenyufeng1991/BinarySearchTree  ??
??????1?????????
typedef int elemType;
typedef struct BTNode{
int data;
struct BTNode *lChild;
struct BTNode *rChild;
}BiTNode??*BiTree;
??????2????????????
???????????????????????????????????????????????????????????????λ?á?
//?????????????
/**
*  ????-1??????????????????????????????
*/
int CreateBinarySearchTree(BiTree *T){
printf("??????????????????????????У? ");
int num;
scanf("%d"??&num);
while (num != -1) {
Insert(T??num);
scanf("%d"??&num);
}
printf("%s??????У????????????????? "??__FUNCTION__);
return 1;
}
??????3????????
//??????
void Insert(BiTree *T??int x){
//?????????????????
BiTNode *pInsert = (BiTNode *)malloc(sizeof(BiTNode));
pInsert->data = x;
pInsert->lChild = NULL;
pInsert->rChild = NULL;
if ((*T) == NULL) {
*T = pInsert;
}
if ((*T)->lChild == NULL && x < (*T)->data) {
(*T)->lChild = pInsert;
}
if ((*T)->rChild == NULL && x > (*T)->data) {
(*T)->rChild = pInsert;
}
//??????
if (x < (*T)->data) {
Insert(&(*T)->lChild?? x);
}
if (x > (*T)->data) {
Insert(&(*T)->rChild?? x);
}
return;
}
??????4??????????????????????
???????????????+?????????????????????????????????????????????????????????????С?????????????????????????????????????????в?????????????
//????????????????
//???????????????????????
void MiddleOrder(BiTree T){
if (T == NULL) {
return;
}else{
MiddleOrder(T->lChild);
printf("%d "??T->data);
MiddleOrder(T->rChild);
}
}
//????????????????
//??????????+??????? ????????????????????????????????
void PreOrder(BiTree T){
if (T == NULL) {
return;
}else{
printf("%d "??T->data);
PreOrder(T->lChild);
PreOrder(T->rChild);
}
}