def minimal_tree(arr): med = len(arr) / 2 left_arr = arr[:med] right_arr = arr[med + 1:] val = arr[med] B = BinaryTree(val) if len(left_arr) > 0: B.addLeft(minimal_tree(left_arr)) if len(right_arr) > 0: B.addRight(minimal_tree(right_arr)) return B
for i in range(len(queue)): subTree = queue.pop() linked_lst.append(subTree.value) if subTree.left != None: queue.insert(0, subTree.left) if subTree.right != None: queue.insert(0, subTree.right) print linked_lst print "----" B = BinaryTree(5) lB = BinaryTree(4) llB = BinaryTree(3) rlB = BinaryTree(4.5) rB = BinaryTree(7) rrB = BinaryTree(9) ''' 5 4 7 3 4.5 9 ''' lB.addLeft(llB) lB.addRight(rlB) rB.addRight(rrB) B.addLeft(lB) B.addRight(rB) list_of_depths(B)