40 lines
830 B
Python
40 lines
830 B
Python
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
|