Skip to content

Instantly share code, notes, and snippets.

@c80609a
Forked from jmccardle/binary_tree.py
Created September 12, 2023 07:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save c80609a/956f271026644f418e11f49d0c97af8c to your computer and use it in GitHub Desktop.
Save c80609a/956f271026644f418e11f49d0c97af8c to your computer and use it in GitHub Desktop.
class BinaryNode:
__slots__ = ("value", "left", "right")
def __init__(self, value=None, left=None, right=None):
self.value = value
self.left = left
self.right = right
def __repr__(self):
return f"<BinaryNode value={self.value}; {1 if self.left else 0 + 1 if self.right else 0} children>"
def inorder(self):
if self.left:
for value in self.left.inorder():
yield value
yield self.value
if self.right:
for value in self.right.inorder():
yield value
def preorder(self):
yield self.value
if self.left:
for value in self.left.preorder():
yield value
if self.right:
for value in self.right.preorder():
yield value
def postorder(self):
if self.left:
for value in self.left.postorder():
yield value
if self.right:
for value in self.right.postorder():
yield value
yield self.value
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment