zoukankan      html  css  js  c++  java
  • 按层打印二叉树--每行打印一层

    一,问题介绍

     给定一棵二叉树,按照层序遍历的顺序打印二叉树。但是要求,每一行打印一层数据。

    二,算法分析

    借助二叉树的层序遍历来实现(使用队列的先入先出性质保证打印的顺序)。

    为了按行打印 :需要额外两个变量,一个变量用来保存当前层 还未打印的结点个数,另一个变量保存下一层待打印的结点个数。

    二叉树层序遍历参考:http://www.cnblogs.com/hapjin/p/5409921.html

    层序打印参考:

     1 public void printTree(BinaryNode<T> root){
     2         if(root == null)
     3             return;
     4         Queue<BinaryNode<T>> queue = new LinkedList<>();
     5         
     6         int current;//当前层 还未打印的结点个数
     7         int next;//下一层结点个数
     8         
     9         queue.offer(root);
    10         current = 1;
    11         next = 0;
    12         while(!queue.isEmpty()){
    13             BinaryNode<T> currentNode = queue.poll();
    14             System.out.printf("%-4d", currentNode.element);
    15             current--;
    16             
    17             if(currentNode.left != null){
    18                 queue.offer(currentNode.left);
    19                 next++;
    20             }
    21             if(currentNode.right != null){
    22                 queue.offer(currentNode.right);
    23                 next++;
    24             }
    25             if(current ==0){
    26                 System.out.println();
    27                 current = next;
    28                 next = 0;
    29             }
    30         }
    31     }

    原文:https://www.cnblogs.com/hapjin/p/5564552.html

  • 相关阅读:
    java内存模型
    如何保证消费者接收消息的顺序
    mysql事务隔离级别
    mysql加锁读
    mysql一致性读
    InnoDB锁
    JDK1.8中的线程池
    JDK1.8中HashMap实现
    物品推荐(基于物品的协同过滤算法)
    CRM 2013 生成自动编号
  • 原文地址:https://www.cnblogs.com/hapjin/p/5564552.html
Copyright © 2011-2022 走看看