书中提到了朴素的二叉查找树的部分代码
其中在说插入节点的时候的代码是这个鸭子的
void insert(int x,int &p){//插入新的节点p,a[p]=x
//&p:直接引用,p改变后p的父节点的l和r都会变
if(!p)p=newnode(x);//新建一个以x为值的节点
else if(x<a[p])insert(x,l[p]);
else if(x>a[p])insert(x,r[p]);
}
但没有说newnode(int x)函数的内容
#include<bits/stdc++.h>
using namespace std;
int n,l[10010],r[10010],a[10010];
void print(int p){//遍历查找树
if(!p)return ;//边界
print(l[p]);//左
cout<<a[p];//中
print(r[p]);//右
}
int find(int x,int p){//查找x,p是下标
if(!p)return 0;//边界
if(x==a[p])return p;//找到了
if(x<a[p])return find(x,l[p]);//要找的比当前小,在左子树
if(x>a[p])return find(x,r[p]);//要找的比当前大,在右子树
}
int findmin(int p){//最左边的是min
if(!p)return 0;//边界
if(!l[p])return p;//找到了
else return findmin(l[p]);//继续
}
int findmax(int p){//最右边的是max
if(!p)return 0;//边界
if(!r[p])return p;//找到了
else return findmax(r[p]);//继续
}
int newnode(int x){
}
void insert(int x,int &p){//插入新的节点p,a[p]=x
//&p:直接引用,p改变后p的父节点的l和r都会变
if(!p)p=newnode(x);//新建一个以x为值的节点
else if(x<a[p])insert(x,l[p]);
else if(x>a[p])insert(x,r[p]);
}
int main(){
return 0;
}