算法 - 二叉树
二叉树 二叉树按层遍历打印 宽度优先遍历,通常使用队列结构。常常有 按照层数换行 的问题。 1 / \ 2 3 / / \ 4 5 6 / \ 7 8 output: 1 2 3 4 5 6 7 8 思路: 这时可以使用两个变量记录,一个是用变量 last 记录当前的 last 结点,另一个是用变量 nlast 记录下一层的 last 结点。 pop() 时添加子树,如果 pop 值等于 last 指向的变量,打印换行符号,last 变量指向 nlast。 nlast 跟踪的是最新加入 queue 的数。 实现: public void printTree(TreeNode root) { TreeNode last = null; TreeNode nlast = null; Queue<TreeNode> queue = new LinkedList<>(); queue.offer(root); last = root; nlast = root; while (!queue.isEmpty()) { TreeNode tmp = queue.poll(); System.out.print(tmp.val + " "); if (tmp.left != null) { queue.offer(tmp.left); nlast = tmp.left; } if (tmp