从零开始Leetcode – Day 18
Binary Search Tree Iterator
https://leetcode.com/problems/binary-search-tree-iterator/
- 这里是用stack 来实习左中右, inorder 遍历。
- 实现stack, push和pop, LIFO
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
| * Definition for binary tree * function TreeNode(val) { * this.val = val; * this.left = this.right = null; * } */ var stack =[];
* @constructor * @param {TreeNode} root - root of the binary search tree */ var BSTIterator = function(root) { while(root !== null){ stack.push(root); root = root.left; } };
* @this BSTIterator * @returns {boolean} - whether we have a next smallest number */ BSTIterator.prototype.hasNext = function() { return (stack.length > 0) ? true : false; };
* @this BSTIterator * @returns {number} - the next smallest number */ BSTIterator.prototype.next = function() { var node = stack.pop(); var res = node.val; if(node.right !== null){ node = node.right; while(node !== null){ stack.push(node); node = node.left; } } return res; };
* Your BSTIterator will be called like this: * var i = new BSTIterator(root), a = []; * while (i.hasNext()) a.push(i.next()); */
|