master-algorithms-py/trees/bst_inorder_iterator.py
2023-08-03 13:10:38 -07:00

37 lines
746 B
Python

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# author: bt3gl
class Node:
def __init__(self, left=None, right=None):
self.val = val
self.left = left
self.right = right
class BST_Iterator:
def __init__(self, root: Optional[Node]):
self.stack = []
self.left_inorder(root)
def left_inorder(self, root):
while root:
self.stack.append(root)
root = root.left
def next(self) -> int:
top_node = self.stack.pop()
if top_node.right:
self.left_inorder(top_node.right)
return top_node.val
def has_next(self) -> bool:
return len(self.stack) > 0