LeetCode 1305. 两棵二叉搜索树中的所有元素(二叉树迭代器)
生活随笔
收集整理的這篇文章主要介紹了
LeetCode 1305. 两棵二叉搜索树中的所有元素(二叉树迭代器)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
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;} };總結
以上是生活随笔為你收集整理的LeetCode 1305. 两棵二叉搜索树中的所有元素(二叉树迭代器)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode 367. 有效的完全平
- 下一篇: 程序员面试金典 - 面试题 01.03.