力扣 173. 二叉搜索树迭代器 中序遍历非递归
发布日期:2021-11-05 06:59:22
浏览次数:13
分类:技术文章
本文共 1112 字,大约阅读时间需要 3 分钟。
思路:对二叉搜索树进行中序遍历就可得到一个从小到大的有序序列。那么最简单的做法就是用一个数组存储中序遍历的结果。但是这个空间复杂度是 O ( n ) O(n) O(n)的,怎么做到 O ( h ) O(h) O(h)呢?使用非递归中序遍历即可。在非递归做法中,栈存储的是从根到某个节点的路径,所以空间复杂度最多为 O ( h ) O(h) O(h)。关于如何用栈实现中序遍历,可以看我这一篇。/** * 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: BSTIterator(TreeNode* root) { cur=root; } /** @return the next smallest number */ int next() { while(cur){ s.push(cur); cur=cur->left; } cur=s.top(); s.pop(); int val=cur->val; cur=cur->right; return val; } /** @return whether we have a next smallest number */ bool hasNext() { if(cur||!s.empty()) return 1; return 0; }private: stacks; TreeNode *cur;};/** * 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(); */
转载地址:https://blog.csdn.net/xiji333/article/details/107942494 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
路过,博主的博客真漂亮。。
[***.116.15.85]2024年05月02日 00时51分13秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
2 QCreator调试并查看源码
2019-05-02
3 Qt Creator 添加自定义注释
2019-05-02
4 Qt 之 pro 配置多个子工程/子模块
2019-05-02
5 Qt之Meta-Object 系统
2019-05-02
6 Qt 之属性系统
2019-05-02
12 Qt 之 QToolBox、QLCDNumber
2019-05-02
13 QT之QRadioButton、QCheckBox
2019-05-02
14 Qt 之 QSpinBox 和 QDoubleSpinBox
2019-05-02
15 QSlider及QProgressBar
2019-05-02
16、QSystemTrayIcon 系统托盘控件
2019-05-02
17、QT布局类
2019-05-02
18、 QStackedWidget
2019-05-02
20、Qt 之 QTemporaryFile
2019-05-02
24 Qt 之 JSON小结
2019-05-02
25 QT之QSetting
2019-05-02
26 QT坐标系统
2019-05-02
27 Qt 之图形(QPainter 的基本绘图)
2019-05-02
28、Qt 之图形(渐变填充)
2019-05-02
29 Qt 之图形(转换)
2019-05-02
30 Qt 之图形之QPainterPath及QPainterPathStroker
2019-05-02