1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<code>public</code> <code>class</code> <code>Tree {</code>
<code> </code><code>TreeNode last;</code>
<code> </code><code>TreeNode nlast;</code>
<code> </code><code>public</code> <code>void</code> <code>printTree(TreeNode root) {</code>
<code> </code><code>Queue<TreeNode> queue = </code><code>new</code> <code>LinkedList<>();</code>
<code> </code><code>queue.add(root);</code>
<code> </code><code>last = root;</code>
<code> </code><code>nlast = root;</code>
<code> </code><code>while</code> <code>(!queue.isEmpty()) {</code>
<code> </code><code>TreeNode t = queue.peek();</code>
<code> </code><code>System.out.print(queue.poll().data + </code><code>" "</code><code>);</code>
<code> </code><code>if</code> <code>(t.left != </code><code>null</code><code>) {</code>
<code> </code><code>queue.add(t.left);</code>
<code> </code><code>nlast = t.left;</code>
<code> </code><code>}</code>
<code> </code><code>if</code> <code>(t.right != </code><code>null</code><code>) {</code>
<code> </code><code>queue.add(t.right);</code>
<code> </code><code>nlast = t.right;</code>
<code> </code><code>// 如果目前輸出結點是最右結點,那麼換行</code>
<code> </code><code>if</code> <code>(last == t) {</code>
<code> </code><code>System.out.println();</code>
<code> </code><code>last = nlast;</code>
<code> </code><code>}</code>
<code> </code><code>}</code>
差不多就是用倆指針,一個指向最後節點,另一個一次指向,當便利到的節點等于每行最後一個節點時就換行。。。。。。。。。
本文轉自 努力的C 51CTO部落格,原文連結:http://blog.51cto.com/fulin0532/1976534