二叉排序树就是插入值比当前节点小的就往当前节点的左子树递归,比当前节点大的就往当前节点的右子树递归,若遇到空节点(即不能比较下去)就在这个位置建立新节点节点值为插入值。
附代码:
#include <iostream>
using namespace std;
typedef struct l{
int val;
struct l* lchild,* rchild;
}lb;
int n,k,flag;
void insertBST(lb*& T,int k){//注意引用T
if(T==NULL){
T=new lb;
T->val=k;
T->lchild=T->rchild=NULL; return ;
}
if(T->val<k){
insertBST(T->rchild,k);
}
else if(T->val>k){
insertBST(T->lchild,k);
}
}
lb* chushi(lb*& T){
T=new lb;
int d; cin>>d;
T->val=d;
T->lchild=T->rchild=NULL;
return T;
}
lb* create(lb*& F){
for(int i=0;i<n-1;i++){
int a; cin>>a;
insertBST(F,a);
}
return F;
}
void chazhao(lb* T,int l){
if(T==NULL) return ;
k++;
if(T->val==l) {
cout<<k; flag=1; return ;
}
else if(l>T->val){
chazhao(T->rchild,l);
}
else if(l<T->val){
chazhao(T->lchild,l);
}
}
int main(){
cin>>n;
lb* root;
root=chushi(root);
root=create(root);
int c; cin>>c;
chazhao(root,c);
if(!flag){
cout<<"-1";
}
}
来源:CSDN
作者:chineseherofeng
链接:https://blog.csdn.net/chineseherofeng/article/details/104672630