All Elements in Two Binary Search Trees

Given two binary search trees root1 and root2.
Return a list containing all the integers from both trees sorted in ascending order.

Example 1:

Input: root1 = {2,1,4}, root2 ={1,0,3}
Output: [0,1,1,2,3,4]

Approach

Java


import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class AllElemTwoBST {
    public static void main(String[] args) {
        TreeNode root1 = new TreeNode(2);
        root1.left = new TreeNode(1);
        root1.right = new TreeNode(4);

        TreeNode root2 = new TreeNode(1);
        root2.left = new TreeNode(0);
        root2.right = new TreeNode(3);

        List<Integerlist = getAllElements(root1, root2);
        System.out.println(Arrays.asList(list));
    }

    static List<Integerv;

    static void dfs(TreeNode root) {
        if (root == null)
            return;
        dfs(root.left);
        v.add(root.val);
        dfs(root.right);
    }

    static List<IntegergetAllElements(TreeNode root1TreeNode root2) {
        v = new ArrayList<>();
        List<Integerres = new ArrayList<Integer>();

        dfs(root1);
        for (int i = 0; i < v.size(); i++)
            res.add(v.get(i));
        v = new ArrayList<Integer>();
        dfs(root2);

        for (int i = 0; i < v.size(); i++)
            res.add(v.get(i));
        Collections.sort(res);
        return res;
    }

}


class TreeNode {
    int val;
    TreeNode left;
    TreeNode right;

    TreeNode() {
    }

    TreeNode(int val) {
        this.val = val;
    }

    TreeNode(int valTreeNode leftTreeNode right) {
        this.val = val;
        this.left = left;
        this.right = right;
    }
}

C++

#include <bits/stdc++.h>
using namespace std;
//struct for treenode
struct TreeNode{
    int data;
    TreeNode *left;
    TreeNode *right;
    TreeNode(int data)
    {
        this->data=data;
        this->left=NULL;
        this->right=NULL;
    }
}; 


vector<intv;
void dfs(TreeNode *root)
{
        if(root==NULL)
               return ;
        dfs(root->left);
        v.push_back(root->data);
        dfs(root->right);
}
vector<intgetAllElements(TreeNode* root1TreeNode* root2
{
        vector<intres;
        v.clear();
        dfs(root1);
        for(int i=0;i<v.size();i++)
               res.push_back(v[i]);
        v.clear();
        dfs(root2);
        
        for(int i=0;i<v.size();i++)
               res.push_back(v[i]);
        sort(res.begin(),res.end());
        return res;
}

int main()
{
   TreeNode *root1=new TreeNode(2);
   root1->left=new TreeNode(1);
   root1->right=new TreeNode(4);

   TreeNode *root2=new TreeNode(1);
   root2->left=new TreeNode(0);
   root2->right=new TreeNode(3);

   vector<intarr=getAllElements(root1,root2);
   for(int i=0;i<arr.size();i++)
      cout<<arr[i]<<" ";
    
   return 0;
}



No comments:

Post a Comment