LCA in BT

/***
You have two singly linked lists that are already sorted, you have to merge them
and return a the head of the new list without creating any new extra nodes. The returned list should be sorted as well
***/

#include<iostream>

using namespace std;

struct node {
       int val;
       node *next;
};    

node * mergelist(node *n1, node *n2) {
       node *n, *head;
       if(n1->val < n2->val) {
              n = n1;
              head = n;
              n1 = n1->next;
       } else {
              n = n2;
              head = n;
              n2 = n2->next;
       }

       while(1) {
              if(n1 == nullptr) {
                     n->next = n2;
                     break;
              }
              else if(n2 == nullptr) {
                     n->next = n1;
                     break;
              }
              else {
                     if(n1->val < n2->val) {
                           n->next = n1;
                           n1 = n1->next;
                           n = n->next;
                     } else {
                           n->next = n2;
                           n2 = n2->next;
                           n = n->next;
                     }
              }
       }
       return head;
}

void main() {
       node n[6];
       for (int i=0; i<6; i++)
       {
              n[i].val = i;
              n[i].next = nullptr;
       }

       n[0].next = &n[2];
       n[1].next = &n[3];
       n[2].next = &n[5];
       n[3].next = &n[4];

       node *m = mergelist(&n[0], &n[1]);

       cout<<"test"<<endl;

}

Comments

Popular posts from this blog

Sudoku

Longest prefix matching - trie

Climbing Stairs