二叉树按行打印,换行。。。。

简介:
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
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;
             }
         }
     }

差不多就是用俩指针,一个指向最后节点,另一个一次指向,当便利到的节点等于每行最后一个节点时就换行。。。。。。。。。



本文转自 努力的C 51CTO博客,原文链接:http://blog.51cto.com/fulin0532/1976534

相关文章
|
4月前
杨辉三角问题(打印空格版)
特点:1、每个数字等于上一行的左右两个数字之和。2、第n+1行的第i个数等于第n行的第i-1个数和第i个数之和,即 C(n+1,i)=C(n,i)+C(n,i-1)。下面我们通过两种不同的办法实现杨辉三角
|
4月前
|
存储 C语言
循环输出26个字母
C 语言实例 - 循环输出26个字母。
53 1
|
10月前
输出三个乘法表,按照完整乘法表、下三角乘法表、上三角乘法表的顺序输出,每个表中间空一行。对于每个乘法表,首行升序输出的 11 到 99 数与数之间恰好有三个空格,接下来 10 行每栏内容都需要
输出三个乘法表,按照完整乘法表、下三角乘法表、上三角乘法表的顺序输出,每个表中间空一行。对于每个乘法表,首行升序输出的 11 到 99 数与数之间恰好有三个空格,接下来 10 行每栏内容都需要
51 0
将一个字符串的str的内容颠倒过来,并输出
将一个字符串的str的内容颠倒过来,并输出
|
11月前
|
C语言 C++
输入一个字符串并使其反序输出
输入一个字符串并使其反序输出
|
11月前
|
算法 Java API
LeetCode每日1题--翻转字符串里的单词
LeetCode每日1题--翻转字符串里的单词
86 0
|
前端开发 JavaScript
利用 FIGlet 输出特殊的字符
利用 FIGlet 输出特殊的字符
133 0
利用 FIGlet 输出特殊的字符
08:打印字符
08:打印字符
78 0
|
C语言 C++
将一个字符串str的内容颠倒(逆序)过来,并输出
将一个字符串str的内容颠倒(逆序)过来,并输出
261 0
将一个字符串str的内容颠倒(逆序)过来,并输出