特点:
1.左子树的值<根节点的值
2.右子树的值>根节点的值
3.符合递归的规律
#include<stdio.h> #include<stdlib.h> typedef struct tree { int data; struct tree *lchild; struct tree *rchild; }tree; tree* btsSearch(tree* T,int data)//搜索 { if(T->data == data ) return T; else if(T->data<data) { return btsSearch(T->lchild,data); } else if(T->data <data) return btsSearch(T->rchild,data); else return NULL; } void insertBTStree(tree**T,int data)//插入即创建,修改一级指针的值要用二级指针 { if(*T==NULL) { *T = (tree*)malloc(sizeof(tree)); (*T)->data = data; (*T)->lchild = NULL; (*T)->rchild = NULL; } else { if((*T)->data>data) { insertBTStree(&(*T)->lchild,data); } else if((*T)->data==data) return ; else insertBTStree(&(*T)->rchild,data); } } void Preorder(tree* T)//先序遍历看看结果 { if(T==NULL) { return ; } else { printf("%d ",T->data ); Preorder(T->lchild ); Preorder(T->rchild ); } } int main() { tree *T; int i; int a[6] = {4,5,19,23,2,8}; for(i = 0;i<6;i++) { insertBTStree(&T,a[i]); } Preorder(T); printf("\n"); return 0; }