The following Python program creates a balanced Binary Tree from a given sorted list Θ(length of sorted list)
class SortedBST:
class Node:
def __init__(self, val):
self.value = val
self.left = None
self.right = None
def __init__(self, nos):
self.nos = nos
self.root = None
self.root = self.initBST(self.root, 0, len(nos) - 1)
def initBST(self, node, low, high):
mid = (low + high) >> 1
node = self.Node(self.nos[mid])
if low < mid:
node.left = self.initBST(node.left, low, mid-1)
if high > mid:
node.right = self.initBST(node.right, mid+1, high)
return node
def BFS(self):
from collections import deque
q = deque()
q.append(self.root)
while(q):
qv = q.popleft()
print(qv.value)
if qv.left != None:
q.append(qv.left)
if qv.right != None:
q.append(qv.right)
sortedList = sorted(list(map(int, input().split())))
sortedBst = SortedBST(sortedList)
sortedBst.BFS()