public class Tree { TreeNode last; TreeNode nlast; public void printTree(TreeNode root) { Queue<TreeNode> queue = new LinkedList<>(); queue.add(root); last = root; nlast = root; while (!queue.isEmpty()) { TreeNode t = queue.peek(); System.out.print(queue.poll().data + " "); if (t.left != null) { queue.add(t.left); nlast = t.left; } if (t.right != null) { queue.add(t.right); nlast = t.right; } // 如果当前输出结点是最右结点,那么换行 if (last == t) { System.out.println(); last = nlast; } } }
差不多就是用俩指针,一个指向最后节点,另一个一次指向,当便利到的节点等于每行最后一个节点时就换行。。。。。。。。。