Hi, here's your problem today. This problem was recently asked by Google:
Given a sorted list, create a height balanced binary search tree, meaning the height differences of each node can only differ by at most 1.
Here's some code to start with:
class Node: def __init__(self, value, left=None, right=None): self.value = value self.left = left self.right = right def __str__(self): answer = str(self.value) if self.left: answer += str(self.left) if self.right: answer += str(self.right) return answer def create_height_balanced_bst(nums): # Fill this in. tree = create_height_balanced_bst([1, 2, 3, 4, 5, 6, 7, 8]) # 53214768 # (pre-order traversal) # 5 # / \ # 3 7 # / \ / \ # 2 4 6 8 # / # 1