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;
- }
- };
- class LLNode{
- public:
- int data;
- LLNode *prev,*next;
- LLNode(int key){
- data=key;
- prev=NULL,next=NULL;
- }
- };
- LLNode* ConvertIntoDLL(Node *root){
- if(root==NULL)
- return NULL;
- LLNode *head=new LLNode(root->data);
- head->prev=ConvertIntoDLL(root->left);
- if(head->prev!=NULL)
- (head->prev)->next=head;
- head->next=ConvertIntoDLL(root->right);
- if(head->next!=NULL)
- (head->next)->prev=head;
- return head;
- }
- LLNode* ConvertIntoCDLL(Node*root){
- if(root==NULL)
- return NULL;
- LLNode* first_node=ConvertIntoDLL(root);
- LLNode* last_node=first_node;
- while(first_node->prev!=NULL)
- first_node=first_node->prev;
- while(last_node->next!=NULL)
- last_node=last_node->next;
- first_node->prev=last_node;
- last_node->next=first_node;
- return first_node;
- }
- 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,2);
- Insert(&root,8);
- LLNode *head=ConvertIntoCDLL(root);
- LLNode *node=head;
- do{
- cout<<" "<<node->data;
- node=node->next;
- }while(node!=head);
- }
Add Comment
Please, Sign In to add comment