stack = [] class TreeNode(): def __init__(self, item, left = None, right = None): self.item = item self.left = left self.right = right def inOrder(head): if head == None: return print(f"[Moving to left node: {head.left.item}]" if not head.left is None else "[Moving to node: None]") stack.append(head.item) print(f"[Pushing current node to Stack: {stack} ]\n") inOrder(head.left) stack.pop() print(f"[Popping current node from Stack: {stack} ]") print(f"[Returned to previous node: {head.item}]\n") print(f"PRINT: {head.item}\n") print(f"[Moving to right node: {head.right.item}]" if not head.right is None else "[Moving to node: None]") stack.append(head.item) print(f"[Pushing current node to Stack: {stack} ]\n") inOrder(head.right) h = TreeNode(4, TreeNode(2, TreeNode(1), TreeNode(3)), TreeNode(6, TreeNode(5), TreeNode(7))) # h = # 4 # # / \ # 2 6 # /\ /\ # 1 3 5 7 inOrder(h)