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     }
    复制代码
  • 相关阅读:
    vue 拖拽移动(类似于iPhone虚拟home )
    鼠标事件-MouseEvent【转】
    JS快速排序 希尔排序 归并排序 选择排序
    JS 继承
    Centos6 iptables 防火墙设置【转】
    centos6 mongodb 安装
    操作系统中涉及的各种调度算法
    循环队列
    队列
    栈(C++)
  • 原文地址:https://www.cnblogs.com/williamjie/p/9478098.html
Copyright © 2011-2022 走看看