Hi, here's your problem today. This problem was recently asked by Apple: You are given a tree, and your job is to print it level-by-level with linebreaks. a / \ b c / \ / \ d e f g The output should be a bc defg Here's a starting point:
from collections import deque

class Node(object):
  def __init__(self, val):
    self.val = val
    self.left = None
    self.right = None

  def __str__(self):
    # Fill this in.

tree = Node('a')
tree.left = Node('b')
tree.right = Node('c')
tree.left.left = Node('d')
tree.left.right = Node('e')
tree.right.left = Node('f')
tree.right.right = Node('g')

print tree
# a
# bc
# defg