BFS
from: http://leetcode.com/2010/09/printing-binary-tree-in-level-order.html
public void breathFirstTraversalIterative(TreeNode root) {
Queue queue = new LinkedList();
TreeNode flagNode = new TreeNode("");
queue.add(root);
queue.add(flagNode);
while (!queue.isEmpty()) {
TreeNode node = queue.poll();
if (node != flagNode) {
System.err.print(node.val + " ");
if (node.left != null)
queue.add(node.left);
if (node.right != null)
queue.add(node.right);
} else if (!queue.isEmpty())
queue.add(flagNode);
}
}