题目与示例
题目
题目内容
给你 root1 和 root2 这两棵二叉搜索树。请你返回一个列表,其中包含 两棵树 中的所有整数并按 升序 排序。
来源:力扣(LeetCode)
示例 1:
输入:root1 = [2,1,4], root2 = [1,0,3]
输出:[0,1,1,2,3,4]
示例 2:
输入:root1 = [1,null,8], root2 = [8,1]
输出:[1,1,8,8]
一、思路
题目中会提供给我们两棵二叉搜索树的根节点root1和root2,要求我们对两棵树中所有整数进行升序排序。
我们首先会想到,要完成该题一定要先得到两棵树中的所有元素,这就涉及到了树的遍历算法,我选择了中序遍历inOrderTraverse()。
在main函数中创建一个用于返回的容器res,我们将遍历到的所有元素压入res中,最后使用sort()函数对res中的元素进行升序排序即可。
二、解题代码
解题代码如下:
class Solution {
void inOrderTraverse(TreeNode* T,vector<int> &res) {
if (T == nullptr) {
return;
}
inOrderTraverse(T->left,res);
res.push_back(T->val);
inOrderTraverse(T->right,res);
}//先序遍历算法
public:
vector<int> getAllElements(TreeNode* root1, TreeNode* root2) {
vector<int>res;//创建一个用于返回的容器res
inOrderTraverse(root1,res);
inOrderTraverse(root2,res);//分别对两棵树进行中序遍历
sort(res.begin(),res.end());//对res中的元素进行升序排序
return res;
}
};
注:以上部分内容源自力扣,解题方法为个人想法,如有错误还请大家指正