二叉排序树的查找,插入和创建代码
#include <iostream>
#include<stdlib.h>
typedef struct BTNode{
int data;
BTNode *lchild;
BTNode *rchild;
}BTNode;
int SearchBTS(BTNode *T,int key,BTNode *f,BTNode *&p){//二叉排序树的查找
BTNode *r,*s;
if(!T){
p=f;//p指向他爹
return 0;
}else{
if(key==T->data){
p=T;
return 1;
}else if(key<T->data){
return SearchBTS(T->lchild,key,T,p);
}else{
return SearchBTS(T->rchild,key,T,p);
}
}
}
int InsertBST(BTNode *&T,int key){//二叉树的插入
BTNode *p,*s;
if(!SearchBTS(T,key,NULL,p)){
s=(BTNode *)malloc(sizeof(BTNode));
s->data=key;
s->lchild=s->rchild=NULL;
if(!p){
T=s;
}else if(key<p->data){
p->lchild=s;
}else{
p->rchild=s;
}
return 1;
}
return 0;
}
void createBTS(BTNode *&T,int arr[],int n){
for(int i=0;i<n;i++){
InsertBST(T,arr[i]);
}
}
void LDR(BTNode *T){
if(T!=NULL){
LDR(T->lchild);
printf("%d ",T->data);
LDR(T->rchild);
}
}
int main(int argc, char** argv) {
BTNode *T;
int arr[]={5,9,35,8,7,21,6,4};
for(int i=0;i<8;i++){
InsertBST(T,arr[i]);
}
//createBTS(T,arr,8);
LDR(T);
return 0;
}