### Revised Binary Tree, with the pytest file

Finally went through and fixed my spaghetti monster.

I might go back and add recursions, but for the purpose of showing readers how I made the code, while loops are much easier to follow, in my opinion.

The diagram of how I decided to do delete from a parent node with two children.

from random import randint # used in manual tests at bottom

def __init__(self, key, value, left, right):

self.key = key

self.value = value

self.left = left

self.right = right

def __repr__(self):

nleft = self.left and self.left.value or None

nright = self.right and self.right.value or None

return f"{nleft} <--- ( {self.key} : {self.value} ) ---> {nright}"

def __init__(self, median):

self.median = median

self.root_node = BinaryTreeNode(self.median, 'binary_root_node', None, None)

self._size = 0

def set(self, akey, value):

""&q…

I might go back and add recursions, but for the purpose of showing readers how I made the code, while loops are much easier to follow, in my opinion.

The diagram of how I decided to do delete from a parent node with two children.

**Python Binary Tree:**from random import randint # used in manual tests at bottom

**class BinaryTreeNode(object):**def __init__(self, key, value, left, right):

self.key = key

self.value = value

self.left = left

self.right = right

def __repr__(self):

nleft = self.left and self.left.value or None

nright = self.right and self.right.value or None

return f"{nleft} <--- ( {self.key} : {self.value} ) ---> {nright}"

**class BinaryTree(object):**def __init__(self, median):

self.median = median

self.root_node = BinaryTreeNode(self.median, 'binary_root_node', None, None)

self._size = 0

def set(self, akey, value):

""&q…