I'm trying to build a perfect binary tree at h height using postorder traversal. Basically I'm trying to do this:
height = 3
numbers = list(range(1, 2 ** height))
tree = buildTree(height, numbers)
The result would be something like this:
7
3 6
1 2 4 5
I'm not really too worried about printing it out in the tree structure. I'm just trying to build the tree correctly. My code is very simple, but I'm having trouble finding out what is wrong with it.
class Node:
def __init__(self, root=None):
self.root = root
self.left = self.right = None
def postorder(height, numbers):
if height == 1:
return Node(numbers.pop())
node = Node()
node.left = postorder(height-1, numbers)
node.right = postorder(height-1, numbers)
node.root = numbers.pop()
return node