BST Iterator

https://leetcode.com/explore/learn/card/introduction-to-data-structure-binary-search-tree/140/introduction-to-a-bst/1008/

class BSTIterator:

    def __init__(self, root: TreeNode):
        self.stack = []
        self.root = root
        self.leftMost(self.root)
    
    def leftMost(self,node):
        while node:
            self.stack.append(node)
            node = node.left
            
    def next(self) -> int:
        """
        @return the next smallest number
        """
        node = self.stack.pop()
        if node.right:
            self.leftMost(node.right)
        return node.val

    def hasNext(self) -> bool:
        """
        @return whether we have a next smallest number
        """
        return len(self.stack) > 0

Last updated

Was this helpful?