Leetcode 173. 二叉搜索树迭代器 解题思路及C++实现
生活随笔
收集整理的這篇文章主要介紹了
Leetcode 173. 二叉搜索树迭代器 解题思路及C++实现
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
解題思路:
使用中序遍歷,將二叉搜索樹的所有節點值依次push進隊列中。每調用依次next函數,即返回隊首元素,并pop。hasNext函數只需判斷隊列是否為空即可。
?
/*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/ class BSTIterator { public:queue<int> q;BSTIterator(TreeNode* root) {//遞歸中序遍歷inorder(root, q);}//遞歸中序遍歷函數void inorder(TreeNode* root, queue<int>& q){if(root == NULL) return;inorder(root->left, q);q.push(root->val);inorder(root->right, q);}/** @return the next smallest number */int next() {int tmp = q.front();q.pop();return tmp;}/** @return whether we have a next smallest number */bool hasNext() {if(q.empty()) return false;else return true;} };/*** Your BSTIterator object will be instantiated and called as such:* BSTIterator* obj = new BSTIterator(root);* int param_1 = obj->next();* bool param_2 = obj->hasNext();*/?
?
?
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的Leetcode 173. 二叉搜索树迭代器 解题思路及C++实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Leetcode 150. 逆波兰表达式
- 下一篇: Leetcode 703. 数据流中的第