LeetCode 五月打卡-day01
Posted 王六六的IT日常
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 五月打卡-day01相关的知识,希望对你有一定的参考价值。
必须拿下五月勋章
2022.5.1
1305. 两棵二叉搜索树中的所有元素
中序遍历+ 归并排序
中序遍历这两棵二叉搜索树,可以得到两个有序数组。然后可以使用双指针方法来合并这两个有序数组,这一方法将两个数组看作两个队列,每次从队列头部取出比较小的数字放到结果中(头部相同时可任取一个)。
https://www.runoob.com/java/java-arraylist-sublist.html
subList() 方法用于截取并返回动态数组中的一部分。
subList() 方法的语法为:
arraylist.subList(int fromIndex, int toIndex)
注:arraylist 是 ArrayList 类的一个对象。
参数说明:
fromIndex - 截取元素的起始位置,包含该索引位置元素
toIndex - 截取元素的结束位置,不包含该索引位置元素
/**
* Definition for a binary tree node.
* public 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;
*
*
*/
class Solution
public List<Integer> getAllElements(TreeNode root1, TreeNode root2)
List<Integer> res1 = new ArrayList<>();
List<Integer> res2 = new ArrayList<>();
inorder(root1, res1);
inorder(root2, res2);
List<Integer> merge = new ArrayList<Integer>();
//双指针
int p1 = 0, p2 = 0;
while (true)
if (p1 == res1.size())
merge.addAll(res2.subList(p2, res2.size()));
break;
if (p2 == res2.size())
merge.addAll(res1.subList(p1, res1.size()));
break;
if (res1.get(p1) < res2.get(p2))
merge.add(res1.get(p1++));
else
merge.add(res2.get(p2++));
return merge;
//中序遍历
public void inorder(TreeNode root, List<Integer> res)
if (root != null)
inorder(root.left, res);
res.add(root.val);
inorder(root.right, res);
/**
* Definition for a binary tree node.
* public 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;
*
*
*/
class Solution
List<Integer> res;
public List<Integer> getAllElements(TreeNode root1, TreeNode root2)
res = new ArrayList<>();
dfs(root1);
dfs(root2);
Collections.sort(res);
return res;
public void dfs(TreeNode root)
if(root == null)
return;
dfs(root.left);
res.add(root.val);
dfs(root.right);
以上是关于LeetCode 五月打卡-day01的主要内容,如果未能解决你的问题,请参考以下文章