173. 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.

Solution: Stack

class BSTIterator(object):
    def __init__(self, root):
        """
        :type root: TreeNode
        """
        self.root = root
        self.stack = []

    def hasNext(self):
        """
        :rtype: bool
        """
        while self.root:
            self.stack.append(self.root)
            self.root = self.root.left
        return bool(self.stack)

    def next(self):
        """
        :rtype: int
        """
        node = self.stack.pop()
        self.root = node.right
        return node.val

results matching ""

    No results matching ""