1. 题目
给你 root1 和 root2 这两棵二叉搜索树。
请你返回一个列表,其中包含 两棵树 中的所有整数并按 升序 排序。.
提示:
每棵树最多有 5000 个节点。
每个节点的值在 [-105, 105] 之间。
2. 二叉树迭代器
按照中序迭代,比较两个迭代器的值val
类似题目:LeetCode 653. 两数之和 IV - 输入 BST
class Solution {TreeNode *r1, *r2;stack<TreeNode*> s1, s2;TreeNode *n1, *n2;
public:vector<int> getAllElements(TreeNode* root1, TreeNode* root2) {r1 = root1;r2 = root2;vector<int> ans;TreeNode *cur1 = iterator1(), *cur2 = iterator2();while(cur1 || cur2){if(cur1 && !cur2){ans.push_back(cur1->val);cur1 = iterator1();}else if(!cur1 && cur2){ans.push_back(cur2->val);cur2 = iterator2();}else{if(cur1->val <= cur2->val){ans.push_back(cur1->val);cur1 = iterator1();}else{ans.push_back(cur2->val);cur2 = iterator2();}}}return ans;}TreeNode* iterator1()//迭代器{while(r1 || !s1.empty()){while(r1){s1.push(r1);r1 = r1->left;}n1 = s1.top();s1.pop();r1 = n1->right;return n1;}return NULL;}TreeNode* iterator2()//迭代器{while(r2 || !s2.empty()){while(r2){s2.push(r2);r2 = r2->left;}n2 = s2.top();s2.pop();r2 = n2->right;return n2;}return NULL;}
};