Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class BNode:
- def __init__(self, content, left=None, right=None):
- self.content = content
- self.left = left
- self.right = right
- def __str__(self):
- string = ""
- if self.content is not None:
- string += str(self.content)
- if self.left is not None:
- string += "L" + str(self.left)
- if self.right is not None:
- string += "R" + str(self.right)
- return string
- class BTree:
- def __init__(self, root):
- self.root = root
- def __str__(self):
- return str(self.root) if self.root is not None else "<<E>>"
- def add(self, content):
- new_node = BNode(content)
- current_node = self.root
- if self.root is None:
- self.root = new_node
- return
- while current_node is not None:
- if current_node.content > new_node.content:
- if current_node.left is None:
- current_node.left = new_node
- else:
- current_node = current_node.left
- elif current_node.content < new_node.content:
- if current_node.right is None:
- current_node.right = new_node
- else:
- current_node = current_node.right
- else:
- break
- def find(self, content):
- current_node = self.root
- while current_node is not None:
- if current_node.content == content:
- return current_node
- elif current_node.content < content:
- current_node = current_node.right
- else:
- current_node = current_node.left
- return None
- def add_many(self, array, min, max, root):
- mid = int((min + max) / 2)
- if min > max:
- return
- self.add(array[mid])
- self.add_many(array, min, mid - 1, self.root.left)
- self.add_many(array, mid + 1, max, self.root.right)
- def convert(self, array):
- array = sorted(array)
- self.root = None
- self.add_many(array, 0, len(array) - 1, self.root)
- node_left = BNode(5)
- node_right = BNode(15)
- node = BNode(10, node_left, node_right)
- tree = BTree(node)
- tree.root = None
- arr = [6, 4, 8, 7, 9 ,1, 10]
- tree.convert(arr)
- print(tree)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement