日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

LeetCode 1305. 两棵二叉搜索树中的所有元素(二叉树迭代器)

發布時間:2024/7/5 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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. 两棵二叉搜索树中的所有元素(二叉树迭代器)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。