int BST_Insert(BiTree &T, int key)//二叉排序树的插入{if(T==NULL){T=(BiTree)malloc(sizeof(BiTNode));T->data = key;T->lchild =NULL;T->rchild =NULL;return1;//表示插入成功}elseif(key ==T->data){return0;//表示树中已有该树,插入失败}else{if(key <T->data)//插入到左节点{returnBST_Insert(T->lchild, key);}else//插入到右节点{returnBST_Insert(T->rchild, key);}}}
创造二叉排序树
voidCreate_BST(BiTree &T, int str[], int n)//创造二叉排序树{T=NULL;
int i =0;while(i<n){BST_Insert(T, str[i]);
i++;}}
判断一颗树是否为BST
int pred =-32767;//pre为无穷小
int JudgeBST(BiTree T)//判断一颗树是否为BST{
int b1, b2;if(!T){return1;}else{
b1 =JudgeBST(T->lchild);//判断左子树是否为BSTif(b1 ==0|| pred>T->data){return0;}
pred =T->data;//保存当前节点
b2 =JudgeBST(T->rchild);//判断右子树return b2;}}