二叉查找树迭代器
来源:互联网 发布:战无不胜灵宠进阶数据 编辑:程序博客网 时间:2024/05/16 01:41
设计实现一个带有下列属性的二叉查找树的迭代器:
- 元素按照递增的顺序被访问(比如中序遍历)
next()
和hasNext()
的询问操作要求均摊时间复杂度是O(1)- 样例
对于下列二叉查找树,使用迭代器进行中序遍历的结果为
[1, 6, 10, 11, 12]
10 / \1 11 \ \ 6 12
挑战额外空间复杂度是O(h),其中h是这棵树的高度
Super Star:使用O(1)的额外空间复杂度
/** * Definition of TreeNode: * class TreeNode { * public: * int val; * TreeNode *left, *right; * TreeNode(int val) { * this->val = val; * this->left = this->right = NULL; * } * } * Example of iterate a tree: * Solution iterator = Solution(root); * while (iterator.hasNext()) { * TreeNode * node = iterator.next(); * do something for node */class Solution {public: //@param root: The root of binary tree. Solution(TreeNode *root) { // write your code here TreeNode *cur = root;while (cur != NULL){buf.push(cur);cur = cur->left;} } //@return: True if there has next node, or false bool hasNext() { // write your code here return buf.empty()? false : true; } //@return: return next node TreeNode* next() { // write your code here if (buf.empty()){return NULL;}TreeNode *top = buf.top();buf.pop();if (top->right){TreeNode *cur = top->right;buf.push(cur);cur = cur->left;while (cur){buf.push(cur);cur = cur->left;}}return top; }private:stack<TreeNode*> buf;};
0 0
- 二叉查找树迭代器
- 二叉查找树迭代器-LintCode
- LintCode_二叉查找树迭代器
- 二叉查找树迭代器
- lintcode(86)二叉查找树迭代器
- 二叉查找
- 查找--二叉查找树
- 【查找结构】二叉查找树
- 查找之二叉树查找
- 查找之二叉树查找
- 查找:二叉查找树总结
- 二叉树、二叉查找树
- 二叉树 & 二叉查找树
- 二叉排序和二叉查找
- 查找--遍历二叉树
- 二叉查找树
- 二叉查找树实现
- 二叉查找树
- Unity碰撞(Collider)的深入理解
- android微信支付回调Activity不能启动的解决方案
- maven学习
- ZOJ 3202
- PostgreSQL获取汉字拼音首字母函数
- 二叉查找树迭代器
- Spring配置文件详解
- [35]Search Insert Position
- 内存分析工具
- 关于C语言中的循环
- 写博客一年之后的总结
- 肤色检测
- 测试对象管理
- Razor语法大全