Binary Search
Binary Search
DELETE KEY
#include<iostream>
class Tree {
public:
int data;
Tree* left;
Tree* right;
Tree(int a) {
data = a;
left = NULL;
right = NULL;
};
if (root == NULL)
return;
DFS(root->left);
DFS(root->right);
}
bool search(Tree* root, int key) {
if (root == NULL) {
return false;
return true;
else {
void min(Tree*root){
while(root->left!=NULL){
root=root->left;
cout<<"minimum is "<<root->data;
void max(Tree*root){
while(root->right!=NULL){
root=root->right;
}
cout<<"maximum is "<<root->data;
if (root == NULL) {
return;
deleteNode(root->left, key);
deleteNode(root->right, key);
else if(key==root->data) {
delete root;
root = NULL;
delete root;
root = temp;
delete root;
root = temp;
}
else{
delete root;
root = temp;
int main() {
Tree* nodes[13];
nodes[1]->left = nodes[2];
nodes[1]->right = nodes[3];
nodes[2]->left = nodes[4];
nodes[2]->right = nodes[5];
nodes[4]->left = nodes[8];
nodes[4]->right = nodes[9];
nodes[3]->left = nodes[6];
nodes[3]->right = nodes[7];
nodes[6]->left = nodes[10];
nodes[6]->right = nodes[11];
nodes[10]->left = nodes[12];
DFS(nodes[1]);
int key;
if (search(nodes[1], key)) {
} else {
min(nodes[1]);
cout<<endl;
max(nodes[1]);
int a;
cin>>a;
deleteNode(nodes[1],a);
cout<<endl;
DFS(nodes[1]);
return 0;
Output: