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     }
    复制代码
  • 相关阅读:
    个性化排序算法实践(三)——deepFM算法
    Textbox输入状态提示
    CheckBox状态多选
    TextBox各种设置
    CheckBox多选
    简单的动画
    样式中调用方法
    textbox获取焦点选中内容
    linq一般用法
    自定义表头Datagrid
  • 原文地址:https://www.cnblogs.com/williamjie/p/9478098.html
Copyright © 2011-2022 走看看