Untitled
unknown
plain_text
a year ago
3.1 kB
11
Indexable
#include<bits/stdc++.h>
using namespace std;
struct BST_Node{
int val;
BST_Node *left, *right;
};
BST_Node* Insert(BST_Node *root, int x)
{
BST_Node *newnode = new BST_Node();
newnode -> val = x;
newnode -> left = NULL;
newnode -> right = NULL;
BST_Node *currnode;
currnode = root;
if(root == NULL)
{
root = newnode;
return root;
}
while(1)
{
if(x < currnode -> val)
{
if(currnode -> left != NULL)
{
currnode = currnode -> left;
}
else
{
currnode -> left = newnode;
return root;
}
}
else
{
if(currnode -> right != NULL)
{
currnode = currnode -> right;
}
else
{
currnode -> right = newnode;
return root;
}
}
}
}
void Preorder(BST_Node *parent)
{
if(parent != NULL)
cout<<parent -> val << " ";
if(parent -> left != NULL)
Preorder(parent -> left);
if(parent -> right != NULL)
Preorder(parent -> right);
}
void Inorder(BST_Node *parent)
{
if(parent -> left != NULL)
Inorder(parent -> left);
if(parent != NULL)
cout<<parent -> val << " ";
if(parent -> right != NULL)
Inorder(parent -> right);
}
void Postorder(BST_Node *parent)
{
if(parent -> left != NULL)
Postorder(parent -> left);
if(parent -> right != NULL)
Postorder(parent -> right);
if(parent != NULL)
cout<<parent -> val << " ";
}
int Search(BST_Node *root, int x)
{
BST_Node *currnode;
currnode = root;
if(root == NULL)
{
return 0;
}
while(1)
{
if(x < currnode -> val)
{
if(currnode -> left != NULL)
{
currnode = currnode -> left;
}
else
{
return 0;
}
}
else if(x > currnode -> val)
{
if(currnode -> right != NULL)
{
currnode = currnode -> right;
}
else
{
return 0;
}
}
else
{
return 1;
}
}
}
//3 5 1 7 10 13 6 15 12 9 0 -1 2
int main()
{
BST_Node *root = NULL;
root = Insert(root,3);
root = Insert(root,5);
root = Insert(root,1);
root = Insert(root,7);
root = Insert(root,10);
root = Insert(root,13);
root = Insert(root,6);
root = Insert(root,15);
root = Insert(root,12);
root = Insert(root,9);
root = Insert(root,0);
root = Insert(root,-1);
root = Insert(root,2);
Preorder(root);
cout<<endl;
Inorder(root);
cout<<endl;
Postorder(root);
cout<<endl;
cout<<Search(root,12)<<endl;
cout<<Search(root,16)<<endl;
}
Editor is loading...
Leave a Comment