Binary Search Tree Iterator
来源:互联网 发布:网络节点分为三类 编辑:程序博客网 时间:2024/06/05 18:37
Binary Search Tree Iterator
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.
使用栈结构,开始时存放从根节点沿着左子树经过的所有节点,当前最小的元素即是栈顶元素,下一个最小元素即是把栈顶元素的右子树节点压进栈,并把该右子树节点地所有沿着左子树的节点压进栈。
代码:
/** * 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 *>smallnode; TreeNode * Root; BSTIterator(TreeNode *root) { Root=root; TreeNode *node=root; while(node) { smallnode.push(node); node=node->left; } } /** @return whether we have a next smallest number */ bool hasNext() { if (!smallnode.empty()) return true; return false; } /** @return the next smallest number */ int next() { TreeNode *node=smallnode.top(); int ans=node->val; smallnode.pop(); if (node->right) { node=node->right; // smallnode.push(node->right); while(node) { smallnode.push(node); node=node->left; } } return ans; }};/** * Your BSTIterator will be called like this: * BSTIterator i = BSTIterator(root); * while (i.hasNext()) cout << i.next(); */
0 0
- Binary Search Tree Iterator
- Binary Search Tree Iterator
- Binary Search Tree Iterator
- Binary Search Tree Iterator
- Binary Search Tree Iterator
- Binary Search Tree Iterator
- Binary Search Tree Iterator
- Binary Search Tree Iterator
- Binary Search Tree Iterator
- Binary Search Tree Iterator
- Binary Search Tree Iterator
- Binary Search Tree Iterator
- Binary Search Tree Iterator
- Binary Search Tree Iterator
- Binary Search Tree Iterator
- Binary Search Tree Iterator
- Binary Search Tree Iterator
- Binary Search Tree Iterator
- angular登陆做权限管理与设置http响应头
- 字符串之间的各种转换
- 神经网络之激活函数(Activation Function)(附maxout)
- 提交任务到spark集群及spark集群的安装
- Apache ZooKeeper Watcher 机制源码解释
- Binary Search Tree Iterator
- 【中文乱码】深入分析 Java Web 中的中文编码问题
- [Android学习]Android基础知识精华
- 【转载】JavaWeb开发Servlet过滤器链执行顺序详解
- 编程心得
- C++与Java区别
- String常用方法汇总
- git 回滚到指定的版本
- python循环引用的解决办法