from typing import Any, Union class BinaryTreeNode: data: Any left: Union['BinaryTreeNode', None] right: Union['BinaryTreeNode', None] def __init__(self, data: Any): self.data = data self.left = None self.right = None def traverse_inorder(self): if self.left: self.left.traverse_inorder() yield self.data if self.right: self.right.traverse_inorder() def traverse_preorder(self): yield self.data if self.left: self.left.traverse_preorder() if self.right: self.right.traverse_preorder() def traverse_postorder(self): if self.left: self.left.traverse_preorder() if self.right: self.right.traverse_postorder() yield self.data