剑指offer面试题23:从上到下打印二叉树(树的层序遍历)
题目:从上往下打印出二叉树的每个节点,同一层的结点按照从左往右的顺序打印。
解题思路:二叉树的层序遍历,在打印一个节点的时候,要把他的子节点保存起来打印第一层要把第二层的节点保存起来,
打印第二层要把第三层的结点保存起来,以此类推。可以使用的容器是队列,每一次打印一个结点的时候,如果该结点有子结点,则把该点的子结点放到队列的末尾,
接下来从队列的头部取出最早进入队列的节点,重复打印操作。
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:从上到下打印二叉树(树的层序遍历)相关推荐
- 剑指offer面试题[23]-从上往下打印二叉树(按层序打印)
题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印. /* struct TreeNode {int val;struct TreeNode *left;struct TreeNode * ...
- 【剑指offer-Java版】23从上往下打印二叉树
从上往下打印二叉树:如果把这个书看做是一个特殊的图,那么该打印过程就类似于一个广度优先遍历 public class _Q23 {public <T> void PrintTreeFrom ...
- 剑指offer(21)从上往下打印二叉树
public class Solution {public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) {//创建俩个数列 ...
- 剑指offer——面试题23:从上往下打印二叉树
剑指offer--面试题23:从上往下打印二叉树 Solution1: 典型的BFS算法! 思路一开始没想到,按照书上的思路写的答案... 注意:deque是双向队列,在头尾插入都很快! /* str ...
- 剑指offer——面试题5:从尾到头打印链表
剑指offer--面试题5:从尾到头打印链表 Solution1:我的答案 /** * struct ListNode { * int val; * struct ListNode *next; * ...
- [剑指offer]面试题23:从上往下打印二叉树
面试题23:从上往下打印二叉树 题目:从上往下打印出二叉树的每个结点,同一层的结点按照从左到右的顺序打印.例如输入图4.5中的二叉树,则依次打印出8.6.10.5.7.9.11. 二叉树结点的定义如下 ...
- 【剑指 offer】(二十三)—— 从上往下打印二叉树(或曰层次遍历、广度优先遍历)
从广度优先到深度优先,只差一个数据结构. 从上往下打印二叉树,实质是在考察树的遍历问题,显然不同于更为经典的先序.中序和后序遍历,而属于一种层次遍历,或曰广度优先遍历. 二叉树节点的定义如下: str ...
- 面试题23_从上往下打印二叉树
题目描写叙述: 从上往下打印出二叉树的每一个节点.同层节点从左至右打印. 解题思路: 这道题考查二叉树的层次遍历. 对于二叉树的先序遍历.中序遍历.兴许遍历.我们都比較熟悉,用递归方法实现,代码也很e ...
- [剑指offer]面试题5:从尾到头打印链表
面试题5:从尾到头打印链表 题目:输入一个链表的头结点,从尾到头反过来打印出每个结点的值. 链表结点定义如下: struct ListNode {int m_nKey;ListNode *m_pNex ...
最新文章
- 工业机器人的下一个竞争焦点已经非常明确:通用人工智能(AGI)
- 孙正义:互联网流量将转化为智能AI流量,我的时代终于来了
- 程序员的成长过程 | 每日趣闻
- 系统二级运维之业务单据错误处理
- java二叉树的运用
- wxWidgets:WxBase 事件循环
- C++堆 和 栈 空间的区别
- build libusb for Android
- Linux 系统的运行级别(Run Level)
- 关于网站主页的界面设计不同风格的探索
- 特斯拉皮卡,会大卖吗?
- Good Numbers (hard version)cf#595(Div.3)
- NLTK-006:分类文本(性别鉴定)
- 使用CSplitterWnd分隔窗口,左视图控制,右视图显示
- 一个好用的项目工时管理系统
- WAR3改键工具FinalKey beta 1.0制作完成
- 互联网早报:UP主首款桌面创作工具,不咕剪辑专业版公测开启
- IT高薪者所具备的人格魅力(上)
- 关于STC8A8K64D4芯片PCA_PWM功能的一些见解(输出1kHz sin波形)
- 关于中国电信、中国联通5G网络的几点思考
热门文章
- return view前端怎么获取_前端判断上传图片格式
- C++ STL容器总结之vector(超详细版)
- linux 修改超级权限密码,linux 修改用户密码
- java西游记壹_岩浆数码再现手机RPG游戏--西游记壹
- Spring Cloud 应用在 Kubernetes 上的最佳实践 — 高可用(混沌工程)
- CNCF 新增两个孵化项目 | 云原生生态周报 Vol. 58
- 阿里巴巴开源 Dragonwell JDK 最新版本 8.1.1-GA 发布
- 深入理解Kubelet核心执行框架
- sqlite 查询 支持多用户同时_开源时代的后端程序员必须要了解的一个数据库SQLite...
- 永洪报表工具_该怎么选BI工具