博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[LeetCode] Binary Search Tree Iterator
阅读量:5142 次
发布时间:2019-06-13

本文共 1578 字,大约阅读时间需要 5 分钟。

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.

Credits:

Special thanks to  for adding this problem and creating all test cases.

 

Thanks to ,无需预先进行全部遍历。

利用中序遍历的递归思想:当子树的根节点访问完成后,后续节点为中序遍历该根节点右子树

1 /** 2  * Definition for binary tree 3  * struct TreeNode { 4  *     int val; 5  *     TreeNode *left; 6  *     TreeNode *right; 7  *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} 8  * }; 9  */10 class BSTIterator {11 public:12     stack
st;13 14 BSTIterator(TreeNode *root) {15 pushLeft(root);16 }17 18 /** @return whether we have a next smallest number */19 bool hasNext() {20 return !st.empty();21 }22 23 /** @return the next smallest number */24 int next() {25 TreeNode *top = st.top();26 st.pop();27 pushLeft(top->right);28 return top->val;29 }30 31 void pushLeft(TreeNode *root) {32 if (root != NULL) {33 TreeNode *p = root;34 st.push(p);35 while (p->left) {36 st.push(p->left);37 p = p->left;38 }39 }40 }41 };42 43 /**44 * Your BSTIterator will be called like this:45 * BSTIterator i = BSTIterator(root);46 * while (i.hasNext()) cout << i.next();47 */

 

转载于:https://www.cnblogs.com/easonliu/p/4238862.html

你可能感兴趣的文章
CI控制器调用内部方法并载入相应模板的做法
查看>>
Hdu - 1002 - A + B Problem II
查看>>
HDU - 2609 - How many
查看>>
每天CookBook之Python-003
查看>>
每天CookBook之Python-004
查看>>
Android设置Gmail邮箱
查看>>
StringBuffer的用法
查看>>
js编写时间选择框
查看>>
PHP压缩文件操作
查看>>
Java数据结构和算法(四)--链表
查看>>
JIRA
查看>>
小技巧——直接在目录中输入cmd然后就打开cmd命令窗口
查看>>
深浅拷贝(十四)
查看>>
由级别和性格特征将程序员分类 ---看看你属于哪一种
查看>>
HDU 6370(并查集)
查看>>
BZOJ 1207(dp)
查看>>
PE知识复习之PE的导入表
查看>>
HDU 2076 夹角有多大(题目已修改,注意读题)
查看>>
洛谷P3676 小清新数据结构题(动态点分治)
查看>>
九校联考-DL24凉心模拟Day2T1 锻造(forging)
查看>>