Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- using namespace std;
- class Node{
- public:
- int data;
- Node *left,*right;
- Node(int key){
- data=key;
- left=right=NULL;
- }
- };
- void Inorder(Node *root){
- if(root==NULL)
- return;
- Inorder(root->left);
- cout<<" "<<root->data;
- Inorder(root->right);
- }
- Node* InorderSuccessor(Node *node){
- if(node->left==NULL)
- return node;
- else
- return InorderSuccessor(node->left);
- }
- Node* Delete(Node *root,int key){
- if(root==NULL)
- return root;
- if(root->data<key)
- root->right=Delete(root->right,key);
- else
- if(root->data>key)
- root->left=Delete(root->left,key);
- else{
- Node *temp=root;
- if(root->left==NULL){
- root=root->right;
- delete temp;
- }
- else
- if(root->right==NULL){
- root=root->left;
- delete temp;
- }
- else{
- Node *successor_node=InorderSuccessor(root->right);
- root->data=successor_node->data;
- root->right=Delete(root->right,successor_node->data);
- }
- }
- return root;
- }
- void Insert(Node **root_ref,int key){
- if(*root_ref==NULL){
- *root_ref=new Node(key);
- return;
- }
- if((*root_ref)->data<key)
- Insert(&((*root_ref)->right),key);
- else
- if((*root_ref)->data>key)
- Insert(&((*root_ref)->left),key);
- }
- int main(){
- Node *root=NULL;
- Insert(&root,5);
- Insert(&root,7);
- Insert(&root,6);
- Insert(&root,2);
- Insert(&root,8);
- Inorder(root);
- root=Delete(root,7);
- cout<<" after deletion ";
- Inorder(root);
- }
Add Comment
Please, Sign In to add comment