LeetCode
来源:互联网 发布:项目计划表软件 编辑:程序博客网 时间:2024/06/16 20:18
Implement an iterator over a binary search tree (BST). Your iterator will be initialized with the root node of a BST.
Calling next()
will return the next smallest number in the BST.
Note: next()
and hasNext()
should run in average O(1) time and uses O(h) memory, where h is the height of the tree.
构造一个迭代器,每次查询二叉搜索树中下一个最小值。
用一个栈来构造,每次把一个点的所有左子树丢进去。next()可以实现O(1)time,hasNext()是O(h)time。空间复杂度O(h)
/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class BSTIterator {public: stack<TreeNode*> st; BSTIterator(TreeNode *root) { solve_left(root); } /** @return whether we have a next smallest number */ bool hasNext() { return !st.empty(); } /** @return the next smallest number */ int next() { TreeNode* cur = st.top(); st.pop(); if (cur->right) { solve_left(cur->right); } return cur->val; } void solve_left(TreeNode* root) { while (root) { st.push(root); root = root->left; } return; }};/** * Your BSTIterator will be called like this: * BSTIterator i = BSTIterator(root); * while (i.hasNext()) cout << i.next(); */
阅读全文
0 0
- leetcode
- [leetcode]
- LeetCode
- leetcode
- leetcode
- leetcode:
- leetcode:
- LeetCode
- leetcode
- LEETCODE
- leetcode
- leetCode
- leetcode
- [leetcode]
- LeetCode
- leetcode
- leetcode:
- leetcode
- Postman工具——Pre-Request Script、Tests
- Scrapy爬取当当网的商品信息存到MySQL数据库
- apt-get update与apt-get upgrade区别
- nodejs-004JSMath函数/数组/表/字符串/常用接口
- 解决ubuntu+win10双系统循环进入启动界面导致无法启动win10的问题
- LeetCode
- 黑色帽子
- nginx(日志管理之日志的使用、定时任务完成日志切割)
- cordova build app提示找不到javac
- ionic3+angular4中给DOM添加监听事件后报错:Uncaught (in promise): TypeError: Cannot read property 'addEventListen
- 计算机程序的思维逻辑 (14)
- 杀菌锅的特点
- 【转载】appium简明教程
- font-awesome-animated字体的动画效果