Hi, here's your problem today. This problem was recently asked by Twitter: You are given the root of a binary tree. Invert the binary tree in place. That is, all left children should become right children, and all right children should become left children. Example:
a / \ b c / \ / d e fThe inverted version of this tree is as follows:
a / \ c b \ / \ f e dHere is the function signature:
class Node:
def __init__(self, value):
self.left = None
self.right = None
self.value = value
def preorder(self):
print self.value,
if self.left: self.left.preorder()
if self.right: self.right.preorder()
def invert(node):
# Fill this in.
root = Node('a')
root.left = Node('b')
root.right = Node('c')
root.left.left = Node('d')
root.left.right = Node('e')
root.right.left = Node('f')
root.preorder()
# a b d e c f
print "\n"
invert(root)
root.preorder()
# a c f b e d