1,问题简述
给你 root1 和 root2 这两棵二叉搜索树。
请你返回一个列表,其中包含 两棵树 中的所有整数并按 升序 排序。
2,示例
输入:root1 = [2,1,4], root2 = [1,0,3]
输出:[0,1,1,2,3,4]
3,题解思路
数据统计
4,题解程序
import java.util.*;
public class GetAllElementsTest {
public static void main(String[] args) {
TreeNode t11 = new TreeNode(2);
TreeNode t12 = new TreeNode(1);
TreeNode t13 = new TreeNode(4);
t11.left = t12;
t11.right = t13;
TreeNode t21 = new TreeNode(1);
TreeNode t22 = new TreeNode(0);
TreeNode t23 = new TreeNode(3);
t21.left = t22;
t21.right = t23;
List<Integer> allElements = getAllElements(t11, t21);
System.out.println("allElements = " + allElements);
}
public static List<Integer> getAllElements(TreeNode root1, TreeNode root2) {
List<Integer> list = new ArrayList<>();
if (root1 == null && root2 == null) {
return list;
}
List<Integer> root1List = getNodeCount(root1);
List<Integer> root2List = getNodeCount(root2);
root1List.addAll(root2List);
Collections.sort(root1List);
return root1List;
}
private static List<Integer> getNodeCount(TreeNode root) {
List<Integer> list = new ArrayList<>();
Deque<TreeNode> deque = new LinkedList<>();
if (root != null) {
deque.add(root);
while (!deque.isEmpty()) {
int size = deque.size();
for (int i = 0; i < size; i++) {
TreeNode node = deque.poll();
list.add(node.val);
if (node.left != null) {
deque.add(node.left);
}
if (node.right != null) {
deque.add(node.right);
}
}
}
}
return list;
}
}
5,题解程序图片版
6,总结
队列的使用,队列的特点是先进先出,这个特性在以往的文章中说过了,前提是理解队列的使用,需要了解的可以看下这篇文章java进阶|java队列源码分析