Binary Search Tree Iterato
来源:互联网 发布:linux c 守护进程 编辑:程序博客网 时间:2024/06/03 23:08
一、问题描述
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.
二、思路
在开始定义一个头指针,定义一个类的构造函数,hasnext()函数很简单,判断头指针是否为空,为空返回false,不为空返回true。
在next()函数中找到最左侧的元素即为BST树最小的元素,当pre不为空时,使pre的左节点指向当前节点的右子树;当pre为空时,pre的左节点指向head。
最后返回最小值。
三、代码
/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class BSTIterator {public: TreeNode *head; BSTIterator(TreeNode *root) { head=root; } /** @return whether we have a next smallest number */ bool hasNext() { if(!head) return false; return true; } /** @return the next smallest number */ int next() { TreeNode *cur = head; TreeNode *pre = NULL; while(cur -> left){ pre = cur; cur = cur -> left; } int temp = cur -> val; if(pre) pre -> left = cur -> right; else head = cur -> right; return temp; }};/** * Your BSTIterator will be called like this: * BSTIterator i = BSTIterator(root); * while (i.hasNext()) cout << i.next(); */
0 0
- Binary Search Tree Iterato
- 173. Binary Search Tree Iterato
- search - binary search/sort tree
- Implement Binary Search Tree
- Binary Search Tree
- binary search tree
- Binary Search Tree
- Binary Search Tree
- Binary Search Tree 实现
- Validate Binary Search Tree
- binary search tree
- Unique Binary Search Tree
- Validate Binary Search Tree
- Recover Binary Search Tree
- Recover Binary Search Tree
- Validate Binary Search Tree
- Validate Binary Search Tree
- Recover Binary Search Tree
- Java基础语法总结
- [LeetCode] 126. Word Ladder II
- POJ 3414 Pots【BFS】
- 老罗的获奖感言及经验转载
- 深入分析ArrayBlockingQueue
- Binary Search Tree Iterato
- Java(发牌机器)
- 136. Single Number
- Java中的main()方法详解
- 线段树【转载】
- linux系统函数的饥渴感
- 数组的拷贝
- [CSU 1803 2016]数学
- 参加ThoughtWorks实训——学习经验技巧的小分享(二)