Binary Search Tree Iterator LeetCode solution in Python
1# Definition for a binary tree node.2# class TreeNode:3# def __init__(self, val=0, left=None, right=None):4# self.val = val5# self.left = left6# self.right = right7class BSTIterator:89def __init__(self, root: Optional[TreeNode]):10self.root = root11self.tree = [] # list to store the inorder traversal1213def inorder(node):14if not node:15return16inorder(node.left)17self.tree.append(node.val)18inorder(node.right)19return2021inorder(self.root)22self.i = 02324def next(self) -> int:25self.i += 126return self.tree[self.i - 1]2728def hasNext(self) -> bool:29return self.i - 1 < len(self.tree) - 1303132# Your BSTIterator object will be instantiated and called as such:33# obj = BSTIterator(root)34# param_1 = obj.next()35# param_2 = obj.hasNext()