Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Modified version of the code found here:
- # http://bit.ly/2tBY3RY
- class Node:
- def __init__(self, val):
- self.l = None
- self.r = None
- self.v = val
- class Tree:
- def __init__(self):
- self.root = None
- def getRoot(self):
- return self.root
- def add(self, val):
- if(self.root == None):
- self.root = Node(val)
- else:
- self._add(val, self.root)
- def _add(self, val, node):
- if(val < node.v):
- if(node.l != None):
- self._add(val, node.l)
- else:
- node.l = Node(val)
- else:
- if(node.r != None):
- self._add(val, node.r)
- else:
- node.r = Node(val)
- # Inorder
- def printTree(self):
- if(self.root != None):
- self._printTree(self.root)
- def _printTree(self, node):
- if(node != None):
- self._printTree(node.l)
- print str(node.v) + ' '
- self._printTree(node.r)
- def postOrder(self):
- if self.root is not None:
- self._postOrder(self.root)
- def _postOrder(self, node):
- if node is not None:
- self._postOrder(node.l)
- self._postOrder(node.r)
- print str(node.v) + ' '
- def relable(self, h):
- hh = get_max_node(h)
- if self.root is not None:
- self._relable(self.root, hh)
- def _relable(self, node, h):
- if node is not None:
- self._relable(node.l, h-2)
- self._relable(node.r, h-1)
- node = Node(h)
- def get_max_node(h):
- return 2**(h)-1
- def answer(h, q):
- max = get_max_node(h)
- tree = Tree()
- for i in range(1, max+1):
- tree.add(i)
- #tree.printTree()
- return tree
- tree = answer(3, [1, 4, 7])
- #tree.printTree()
- tree.relable(3)
- tree.postOrder()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement