二叉树的分层遍历分成一下五种。
1、从上到下分层遍历,每层从左到右,设置双指针,一个指针指向队列中二叉树一层的第一个节点,另外一个指针表示这一层的结尾节点的下一个节点
2、从上到下分层遍历,每层从右到左, 2有1改变左右孩子的入队列顺序即可。
3、从下到上分层遍历,每层从左往右, 要标示出二叉树的分层。之后逆序输出。
4、从下到上分层遍历,每层从右往左,4由三变化左右孩子的入队列顺序即可
5、按之字形分层输出,用双栈实现
测试二叉树的形状入下图所示:
控制台输出:
从上到下分层遍历,每层从左到右
1
2 3
4 5 6
7 8
从上到下分层遍历,每层从右到左
1
3 2
6 5 4
8 7
从下到上分层遍历,每层从左往右
7 8
4 5 6
2 3
1
从下到上分层遍历,每层从右往左
8 7
6 5 4
3 2
1
按之字形分层输出,用双栈实现
1
3 2
4 5 6
8 7
代码如下:
import java.util.ArrayList;
import java.util.Stack;
/**
* @author liyiwen1
* @date 2016/12/27
*/
public class TreeBuilder{
public static void main(String[] args) {
Tree tree = builde(new Integer[]{
1,2,3,4,5,6,null,null,null, 7,8});
System.out.println("从上到下分层遍历,每层从左到右");
tree.fencengLefeToRight();
System.out.println("从上到下分层遍历,每层从右到左");
tree.fencengRightToLeft();
System.out.println("从下到上分层遍历,每层从左往右");
tree.fencengDownUpLeftToRight();
System.out.println("\r\n从下到上分层遍历,每层从右往左");
tree.fencengDownUpRightToLeft();
System.out.println("\r\n按之字形分层输出,用双栈实现