从上到下打印二叉树

  • Post author:
  • Post category:其他


题目

从上到下打印出二叉树的每个节点,每层的节点按照从左到右的顺序打印。

例子:

打印顺序:8,6,10,5,7,9,11

二叉树节点定义:

class TreeNode{
    public int value;
    public TreeNode left;
    public TreeNode right;
    public TreeNode(int a){
        value = a;
        left = null;
        right = null;
    }
}

思路:

本题实际上是层序遍历二叉树,根据题目特点,选用队列来存储相应节点,每次取出队列头部元素,如果该元素有子节点,将子节点放入队列中,如此循环。

代码

public static void printFromTopToBottom(TreeNode t){
    if(t == null)return;
    Queue<TreeNode> q = new LinkedList<>();
    q.offer(t);
    while(!q.isEmpty()){
        TreeNode temp = q.remove();
        System.out.print(temp.value + " ");
        if(temp.left != null)q.offer(temp.left);
        if(temp.right != null)q.offer(temp.right);
    }
}

测试以及结果

public static void main(String args[]) {

    TreeNode t1 = new TreeNode(8);

    TreeNode t2 = new TreeNode(6);

    TreeNode t3 = new TreeNode(10);

    TreeNode t4 = new TreeNode(5);

    TreeNode t5 = new TreeNode(7);

    TreeNode t6 = new TreeNode(9);

    TreeNode t7 = new TreeNode(11);

    t1.left = t2;

    t1.right = t3;

    t2.left = t4;

    t2.right = t5;

    t3.left = t6;

    t3.right = t7;

    printFromTopToBottom(t1);

}


总结

本题区别与二叉树的前中后序遍历,它们都是通过栈数据结构来实现存储节点。本题的思考可以通过举例子的方法,模仿遍历过程,发现规律。



版权声明:本文为weixin_42518668原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。