题目:从上往下打印出二叉树的每个节点,同一层的结点按照从左往右的顺序打印。

解题思路:二叉树的层序遍历,在打印一个节点的时候,要把他的子节点保存起来打印第一层要把第二层的节点保存起来,

打印第二层要把第三层的结点保存起来,以此类推。可以使用的容器是队列,每一次打印一个结点的时候,如果该结点有子结点,则把该点的子结点放到队列的末尾,

接下来从队列的头部取出最早进入队列的节点,重复打印操作。

package Solution;import java.util.LinkedList;
import java.util.Queue;public class No23PrintTreeFromTopToBottom {static class BinaryTreeNode{int value;BinaryTreeNode left;BinaryTreeNode right;public  BinaryTreeNode(int value,BinaryTreeNode left,BinaryTreeNode right){this.value=value;this.left=left;this.right=right;}}public static void printBinaryTreeFromTopToBottom(BinaryTreeNode node){if(node==null)throw new RuntimeException("invalid parameter");Queue<BinaryTreeNode> queue=new LinkedList<BinaryTreeNode>();queue.add(node);while(!queue.isEmpty()){BinaryTreeNode currentNode=queue.poll();System.out.print(currentNode.value +",");if(currentNode.left!=null)queue.add(currentNode.left);if(currentNode.right!=null)queue.add(currentNode.right);}}public static void main(String[] args) {BinaryTreeNode node1=new BinaryTreeNode(5,null,null);BinaryTreeNode node2=new BinaryTreeNode(7,null,null);BinaryTreeNode node3=new BinaryTreeNode(9,null,null);BinaryTreeNode node4=new BinaryTreeNode(11,null,null);BinaryTreeNode node5=new BinaryTreeNode(6,node1,node2);BinaryTreeNode node6=new BinaryTreeNode(10,node3,node4);BinaryTreeNode node7=new BinaryTreeNode(8,node5,node6);printBinaryTreeFromTopToBottom(node7);}
}

转载于:https://www.cnblogs.com/gl-developer/p/7259373.html

剑指offer面试题23:从上到下打印二叉树(树的层序遍历)相关推荐

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

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

  2. 【剑指offer-Java版】23从上往下打印二叉树

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

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

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

  4. 剑指offer——面试题23:从上往下打印二叉树

    剑指offer--面试题23:从上往下打印二叉树 Solution1: 典型的BFS算法! 思路一开始没想到,按照书上的思路写的答案... 注意:deque是双向队列,在头尾插入都很快! /* str ...

  5. 剑指offer——面试题5:从尾到头打印链表

    剑指offer--面试题5:从尾到头打印链表 Solution1:我的答案 /** * struct ListNode { * int val; * struct ListNode *next; * ...

  6. [剑指offer]面试题23:从上往下打印二叉树

    面试题23:从上往下打印二叉树 题目:从上往下打印出二叉树的每个结点,同一层的结点按照从左到右的顺序打印.例如输入图4.5中的二叉树,则依次打印出8.6.10.5.7.9.11. 二叉树结点的定义如下 ...

  7. 【剑指 offer】(二十三)—— 从上往下打印二叉树(或曰层次遍历、广度优先遍历)

    从广度优先到深度优先,只差一个数据结构. 从上往下打印二叉树,实质是在考察树的遍历问题,显然不同于更为经典的先序.中序和后序遍历,而属于一种层次遍历,或曰广度优先遍历. 二叉树节点的定义如下: str ...

  8. 面试题23_从上往下打印二叉树

    题目描写叙述: 从上往下打印出二叉树的每一个节点.同层节点从左至右打印. 解题思路: 这道题考查二叉树的层次遍历. 对于二叉树的先序遍历.中序遍历.兴许遍历.我们都比較熟悉,用递归方法实现,代码也很e ...

  9. [剑指offer]面试题5:从尾到头打印链表

    面试题5:从尾到头打印链表 题目:输入一个链表的头结点,从尾到头反过来打印出每个结点的值. 链表结点定义如下: struct ListNode {int m_nKey;ListNode *m_pNex ...

最新文章

  1. 工业机器人的下一个竞争焦点已经非常明确:通用人工智能(AGI)
  2. 孙正义:互联网流量将转化为智能AI流量,我的时代终于来了
  3. 程序员的成长过程 | 每日趣闻
  4. 系统二级运维之业务单据错误处理
  5. java二叉树的运用
  6. wxWidgets:WxBase 事件循环
  7. C++堆 和 栈 空间的区别
  8. build libusb for Android
  9. Linux 系统的运行级别(Run Level)
  10. 关于网站主页的界面设计不同风格的探索
  11. 特斯拉皮卡,会大卖吗?
  12. Good Numbers (hard version)cf#595(Div.3)
  13. NLTK-006:分类文本(性别鉴定)
  14. 使用CSplitterWnd分隔窗口,左视图控制,右视图显示
  15. 一个好用的项目工时管理系统
  16. WAR3改键工具FinalKey beta 1.0制作完成
  17. 互联网早报:UP主首款桌面创作工具,不咕剪辑专业版公测开启
  18. IT高薪者所具备的人格魅力(上)
  19. 关于STC8A8K64D4芯片PCA_PWM功能的一些见解(输出1kHz sin波形)
  20. 关于中国电信、中国联通5G网络的几点思考

热门文章

  1. return view前端怎么获取_前端判断上传图片格式
  2. C++ STL容器总结之vector(超详细版)
  3. linux 修改超级权限密码,linux 修改用户密码
  4. java西游记壹_岩浆数码再现手机RPG游戏--西游记壹
  5. Spring Cloud 应用在 Kubernetes 上的最佳实践 — 高可用(混沌工程)
  6. CNCF 新增两个孵化项目 | 云原生生态周报 Vol. 58
  7. 阿里巴巴开源 Dragonwell JDK 最新版本 8.1.1-GA 发布
  8. 深入理解Kubelet核心执行框架
  9. sqlite 查询 支持多用户同时_开源时代的后端程序员必须要了解的一个数据库SQLite...
  10. 永洪报表工具_该怎么选BI工具