Files
python/exercises/practice/binary-search-tree/example.py
2021-01-29 11:14:36 -05:00

52 lines
1.4 KiB
Python

class TreeNode:
def __init__(self, data, left=None, right=None):
self.data = data
self.left = left
self.right = right
def __str__(self):
fmt = 'TreeNode(data={}, left={}, right={})'
return fmt.format(self.data, self.left, self.right)
class BinarySearchTree:
def __init__(self, tree_data):
self.root = None
for data in tree_data:
self.add(data)
def add(self, data):
if self.root is None:
self.root = TreeNode(data)
return
inserted = False
cur_node = self.root
while not inserted:
if data <= cur_node.data:
if cur_node.left:
cur_node = cur_node.left
else:
cur_node.left = TreeNode(data)
inserted = True
elif data > cur_node.data:
if cur_node.right:
cur_node = cur_node.right
else:
cur_node.right = TreeNode(data)
inserted = True
def _inorder_traverse(self, node, elements):
if node is not None:
self._inorder_traverse(node.left, elements)
elements.append(node.data)
self._inorder_traverse(node.right, elements)
def data(self):
return self.root
def sorted_data(self):
elements = []
self._inorder_traverse(self.root, elements)
return elements