Advertisement
Josif_tepe

Untitled

Mar 24th, 2024
512
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.27 KB | None | 0 0
  1. class Solution
  2. {
  3.     public:
  4.     //Function to return a list of integers denoting the node
  5.     //values of both the BST in a sorted order.
  6.     vector<int> v1, v2;
  7.     void dfs(Node *root, int t) {
  8.         if(!root) {
  9.             return;
  10.         }
  11.         dfs(root->left, t);
  12.         if(t == 1) {
  13.             v1.push_back(root->data);
  14.         }
  15.         else {
  16.             v2.push_back(root->data);
  17.         }
  18.         dfs(root->right, t);
  19.     }
  20.     vector<int> merge(Node *root1, Node *root2)
  21.     {
  22.         dfs(root1, 1);
  23.         dfs(root2, 2);
  24.        
  25.         vector<int> v;
  26.         int i = 0,  j = 0;
  27.         while(i < (int) v1.size() and j < (int) v2.size()) {
  28.             if(v1[i] < v2[j]) {
  29.                 v.push_back(v1[i]);
  30.                 i++;
  31.             }
  32.             else if(v1[i] > v2[j]) {
  33.                 v.push_back(v2[j]);
  34.                 j++;
  35.             }
  36.             else {
  37.                 v.push_back(v1[i]);
  38.                 v.push_back(v1[i]);
  39.                 i++;
  40.                 j++;
  41.             }
  42.         }
  43.         while(i < (int) v1.size()) {
  44.             v.push_back(v1[i]);
  45.             i++;
  46.         }
  47.         while(j < (int) v2.size()) {
  48.             v.push_back(v2[j]);
  49.             j++;
  50.         }
  51.         return v;
  52.     }
  53. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement