二叉查找树模板求助
  • 板块学术版
  • 楼主夜阑
  • 当前回复2
  • 已保存回复2
  • 发布时间2022/6/6 11:36
  • 上次更新2023/10/27 23:53:12
查看原帖
二叉查找树模板求助
243263
夜阑楼主2022/6/6 11:36

此代码来自《信息学奥赛一本通-提高篇》P273起

书中提到了朴素的二叉查找树的部分代码

其中在说插入节点的时候的代码是这个鸭子的

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;
}
2022/6/6 11:36
加载中...