Given two binary search trees
Return a list containing all the integers from both trees sorted in ascending order.
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<Integer> list = getAllElements(root1, root2);System.out.println(Arrays.asList(list));}static List<Integer> v;static void dfs(TreeNode root) {if (root == null)return;dfs(root.left);v.add(root.val);dfs(root.right);}static List<Integer> getAllElements(TreeNode root1, TreeNode root2) {v = new ArrayList<>();List<Integer> res = 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 val, TreeNode left, TreeNode right) {this.val = val;this.left = left;this.right = right;}}
C++
#include <bits/stdc++.h>using namespace std;//struct for treenodestruct TreeNode{int data;TreeNode *left;TreeNode *right;TreeNode(int data){this->data=data;this->left=NULL;this->right=NULL;}};vector<int> v;void dfs(TreeNode *root){if(root==NULL)return ;dfs(root->left);v.push_back(root->data);dfs(root->right);}vector<int> getAllElements(TreeNode* root1, TreeNode* root2){vector<int> res;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<int> arr=getAllElements(root1,root2);for(int i=0;i<arr.size();i++)cout<<arr[i]<<" ";return 0;}
No comments:
Post a Comment