def returnBFS(self):
     keys = []
     bfsQ = Queue()
     bfsQ.enQueue(self.root)
     cur = bfsQ.deQueue()
     while cur:
         keys.append(cur.key)
         if (cur.left):
             bfsQ.enQueue(cur.left)
         if (cur.right):
             bfsQ.enQueue(cur.right)
         cur = bfsQ.deQueue()
     return keys
 def traverseBFS(self):
     string = ""
     bfsQ = Queue()
     bfsQ.enQueue(self.root)
     cur = bfsQ.deQueue()
     while cur:
         string += ("\n%s - (%s|%s, %s)" %
                    (cur.key, cur.parent.key if cur.parent else None,
                     cur.left.key if cur.left else None,
                     cur.right.key if cur.right else None))
         if (cur.left):
             bfsQ.enQueue(cur.left)
         if (cur.right):
             bfsQ.enQueue(cur.right)
         cur = bfsQ.deQueue()
     if (string == ""):
         string = "(Empty)"
     return string
 def __init__(self):
     self.root = None
     self.current = None
     self.queue = Queue()
     self.past = Stack()