You are on page 1of 3

#include<iostream>

#include<ctime>
#include<cstdlib>
using namespace std;

struct node{
int data;
node *left;
node *right;
};

bool empty(node *tree)


{
if(tree == nullptr)
return false;
else
return false;
}
void add(node *&item, int val)
{
if(item == nullptr)
{
node *tmp = new node;
tmp->data = val;
tmp->left = tmp->right = nullptr;
item = tmp;
return;
}
if(item->data == val)
return;

if(val < item->data)


add(item->left, val);
if(val > item->data)
add(item->right, val);
}

void show_pre(node *tree)


{
if(tree == nullptr)
return;
cout<< tree->data << " ";
show_pre(tree->left);
show_pre(tree->right);
}

void show_post(node *tree)


{
if(tree == nullptr)
return;
show_post(tree->left);
show_post(tree->right);
cout<<tree->data<<" ";
}

void show_in(node *tree)


{
if(tree == nullptr)
return;
show_in(tree->left);
cout<<tree->data<<" ";
show_in(tree->right);
}

int min_val(node *tree)


{
if(tree == nullptr)
return 0;
while(tree->left != nullptr)
tree = tree->left;
return(tree->data);
}

int max_val(node *tree)


{
if(tree == nullptr)
return 0;
while(tree->right != nullptr)
tree = tree->right;

return(tree->data);
}

void cleane(node *&tree)


{
if(tree == nullptr)
return;

if(tree->left != nullptr)
cleane(tree->left);
if(tree->right != nullptr)
cleane(tree->right);

delete tree;
tree = nullptr;
return;
}

bool is_present(node *tree, int val)


{
if(tree == nullptr)
return false;

if(val == tree->data)
return true;

if(val > tree->data)


return is_present(tree->right, val);
if(val < tree->data)
return is_present(tree->left, val);
}

node *find(node *tree, int val)


{
if(empty(tree))
return NULL;
if(val == tree->data)
return tree;
if(val < tree->data)
return find(tree->left, val);
if(val > tree->data)
return find(tree->right, val);
}
int main()
{
struct node *tree = nullptr;
int i, n, k;
int x;
srand(time(NULL));
cin>>n;
for(i=0; i<n; i++)
{
x = rand()%10;
cout<<x<<" ";
add(tree, x);
}
cout<<endl<<endl;
show_pre(tree);
cout<<endl;
show_in(tree);
cout<<endl;
show_post(tree);
cout<<endl;
cout<<"Min = "<<min_val(tree)<<endl;
cout<<"Max = "<<max_val(tree)<<endl;
cin>>n;
cout<<"is_persent = "<<is_present(tree, n)<<endl;
return 0;
}

You might also like