py-tools/tools/trees.py

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