// BST
#include<iostream>
using namespace std;
typedef struct node{
struct node *left,*right;
int v;
}node;
node *root;
//find
bool BST_find(const node*& p,int value)
{
if(!p) return 0;
else {
if(p->v == value) return 1;
else if(p->v < value) p = p->left ;
else if(p->v > value) p = p->right ;
}
}
//insert
bool BST_insert(node*&p,int value)
{
node e = new(node);
e->left = NULL;
e->right = NULL;
e->v = value;
if(!p){
p->v = value;
return 1;
}else if(p->v > value)
{
p = p->left;
}else if(p->v < value)
{
p = p->right;
}else if(p->v == value)
return 0;
}
//del 三种情况(叶子节点,有左或者右其中一个孩子,有两个孩子)
int main()
{
int va;
while(cin>>va)
{
BST_insert(root,va);
BST_find(root,va);
BST_del(root,va);
BST_find(root,va);
}
return 0;
}
未写完,回去完成。
treap之一
最新推荐文章于 2021-03-23 09:41:52 发布