package Sort;
import java.util.ArrayList;
import java.util.List;
public class GetAllElements_1305 {
// 1305. 两棵二叉搜索树中的所有元素
public class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) {
val = x;
}
}
public List<Integer> getAllElements(TreeNode root1, TreeNode root2) {
List<Integer> list1=new ArrayList<>();
List<Integer> list2=new ArrayList<>();
recur(root1,list1);
recur(root2,list2);
return merge(list1,list2);
}
private List<Integer> merge(List<Integer> list1, List<Integer> list2) {
List<Integer> res=new ArrayList<>();
int size1=list1.size();
int size2=list2.size();
int index1=0;
int index2=0;
while(index1<size1&&index2<size2) {
if(list1.get(index1)<=list2.get(index2)) {
res.add(list1.get(index1++));
}else {
res.add(list2.get(index2++));
}
}
while(index1<size1) {
res.add(list1.get(index1++));
}
while(index2<size2) {
res.add(list2.get(index2++));
}
return res;
}
private void recur(TreeNode root, List<Integer> list) {
if(root!=null) {
recur(root.left,list);
list.add(root.val);
recur(root.right,list);
}
}
}
1305. 两棵二叉搜索树中的所有元素(递归、排序、二叉树)
最新推荐文章于 2020-08-30 19:23:13 发布