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.
a / \ b c / \ / d e f
The inverted version of this tree is as follows:
a / \ c b \ / \ f e d
Here 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