从上往下打印二叉树:如果把这个书看做是一个特殊的图,那么该打印过程就类似于一个广度优先遍历

public class _Q23 {public <T> void PrintTreeFromTopToButtom(BinaryTreeNode<T> root){if(root == null) return;Queue<BinaryTreeNode<T>> queue = new LinkedList<>();queue.add(root);while(!queue.isEmpty()){BinaryTreeNode<T> node = queue.remove();if(node.leftChild != null) queue.add(node.leftChild);if(node.rightChild != null) queue.add(node.rightChild);System.out.print(node.value + " ");}System.out.println();}}

测试代码:

public class _Q23Test extends TestCase {_Q23 tree = new _Q23();public void test(){BinaryTreeNode<Integer> root = new BinaryTreeNode<>();BinaryTreeNode<Integer> node1 = new BinaryTreeNode<>();BinaryTreeNode<Integer> node2 = new BinaryTreeNode<>();BinaryTreeNode<Integer> node3 = new BinaryTreeNode<>();BinaryTreeNode<Integer> node4 = new BinaryTreeNode<>();BinaryTreeNode<Integer> node5 = new BinaryTreeNode<>();BinaryTreeNode<Integer> node6 = new BinaryTreeNode<>();root.value = 8;node1.value = 6;node2.value = 10;node3.value = 5;node4.value = 7;node5.value = 9;node6.value = 11;root.leftChild = node1;root.rightChild = node2;node1.leftChild = node3;node1.rightChild = node4;node2.leftChild = node5;node2.rightChild = node6;node3.leftChild = null; node3.rightChild = null;node4.leftChild = null; node4.rightChild = null;node5.leftChild = null; node5.rightChild = null;node6.leftChild = null; node6.rightChild = null;tree.PrintTreeFromTopToButtom(root);tree.PrintTreeFromTopToButtom(null);tree.PrintTreeFromTopToButtom(node1);}}

【剑指offer-Java版】23从上往下打印二叉树相关推荐

  1. 剑指offer面试题[23]-从上往下打印二叉树(按层序打印)

    题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印. /* struct TreeNode {int val;struct TreeNode *left;struct TreeNode * ...

  2. 剑指offer(21)从上往下打印二叉树

    public class Solution {public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) {//创建俩个数列 ...

  3. 剑指offer java版 test3—从尾到头打印链表

    标题:剑指offer java版 test3-从尾到头打印链表 题目:输入一个链表,按链表从尾到头的顺序返回一个ArrayList. 解答:知识不够全面,用ArrayList做的 但是看到大佬们还可以 ...

  4. 剑指offer编程试题Java实现--22.从上往下打印二叉树

    个人博客:小景哥哥 22.从上往下打印二叉树 题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印. import java.util.ArrayList; import java.util ...

  5. 剑指offer(Java实现) 从上往下打印二叉树

    题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印. 解题思路 利用队列(链表)辅助实现. 代码实现 import java.util.ArrayList; import java.uti ...

  6. 剑指offer java版(一)

    二维数组中的查找 问题描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数 ...

  7. 剑指offer java版 test42—找出和为S的两个数,左右夹逼法(双指针法)

    前言:受上一题的启发,这题自己也编出来了.在碰到这种有序数列的时候,经常会用到双指针法,一个指左边,一个指右边,然后依照规则移动,增加或缩小范围.很实用. 题目: 输入一个递增排序的数组和一个数字S, ...

  8. 剑指offer java版(三)

    二叉搜索树的后序遍历 问题描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个数字都互不相同. 解题思路 对于后序遍历来说, ...

  9. 剑指offer没有java版吗_剑指Offer(Java版) 持续更新中

    面试题2 单例(之前有整理,略) 面试题3 二维数组中的查找 public boolean find(int target, int [][] array) { boolean found = fal ...

最新文章

  1. 基于开源CA系统ejbca community 6.3.1.1构建私有CA管理数字证书
  2. 来自MIT的论文答辩、PPT教程,教你轻松应对毕业季和学术会议
  3. mysql的表最多可设置多少字段?
  4. 产品治理体系:产品顶层框架
  5. Oracle SQL语句大全(三)
  6. JavaFX技巧2:使用Canvas API进行清晰绘图
  7. shell 删除文本中的重复行(sort+uniq/awk/sed) (方法=效率啊)
  8. [react] 什么时候使用状态管理器?
  9. 课程 | 《知识图谱》第二期重磅来袭!
  10. python测试题 - 字典操作
  11. 怎么在HTML上显示数据库的表格,在预定义的html表格中显示数据库表格记录
  12. IDEA 配置Maven国内源
  13. 量化中需留意的坑之二
  14. python开发网络程序教程_python3编写C/S网络程序实例教程
  15. html学校代码怎么弄,学校代码查询网2020怎么查学校代码?查学校代码的方法
  16. 设计模式-行为型软件设计模式(二)
  17. tk域名管理后台_TK域名解析教程,dns设置教程
  18. 本地文件搜索神器 --- Everything软件,快速搜索本地磁盘上的文件
  19. docker安装shipyard
  20. 音视频常见问题分析和解决:延时和抖动

热门文章

  1. wordpress ajax 调用wpdb_莫名其妙的调用Roboto字体又莫名其妙的恢复的过程
  2. CentOS 8中安装Docker出现和Podman冲突
  3. pythonselenium浮动框_python上selenium的弹框操作实现
  4. proteus仿真micropython_【雕爷学编程】MicroPython动手做(04)——零基础学MaixPy之尝试运行...
  5. Android提示版本号更新操作流程
  6. stm32与arm7比较(经典)
  7. ThreadLocal是否会引发内存泄露的分析 good
  8. Fedora 18 正式发布
  9. 探索客户端JavaScript
  10. 多比矢量图开发手册(六)-Web高级图元编程