[剑指offer]面试题23:从上往下打印二叉树
面试题23:从上往下打印二叉树
题目:从上往下打印出二叉树的每个结点,同一层的结点按照从左到右的顺序打印。例如输入图4.5中的二叉树,则依次打印出8、6、10、5、7、9、11。
二叉树结点的定义如下:
struct BinaryTreeNode
{int value;BinaryTreeNode *lchild;BinaryTreeNode *rchild;
};
思路:
每一次打印一个结点的时候,如果该结点有子结点,则把该结点的子结点放到一个队列的末尾。接下来到队列的头部取出最早进入队列的结点,重复前面的打印操作,直至队列中所有的结点都被打印出来为止。
代码如下:
void PrintFromTopToBottom(BinaryTreeNode *pTreeRoot)
{if (!pTreeRoot) return;deque<BinaryTreeNode *> dequeTreeNode;dequeTreeNode.push_back(pTreeRoot);while (dequeTreeNode.size()){BinaryTreeNode *pNode = dequeTreeNode.front();dequeTreeNode.pop_front();cout << pNode->value << " ";if (pNode->lchild) dequeTreeNode.push_back(pNode->lchild);if (pNode->rchild) dequeTreeNode.push_back(pNode->rchild);}
}
本题考点:
● 考查思维能力。按层从上到下遍历二叉树,这对很多应聘者是个新概念,要在短时间内想明白遍历的过程不是一件容易的事情。应聘者通过具体的例子找出其中的规律并想到基于队列的算法,是解决这个问题的关键所在。
● 考查应聘者对二叉树及队列的理解。
[剑指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_从上往下打印二叉树
题目描写叙述: 从上往下打印出二叉树的每一个节点.同层节点从左至右打印. 解题思路: 这道题考查二叉树的层次遍历. 对于二叉树的先序遍历.中序遍历.兴许遍历.我们都比較熟悉,用递归方法实现,代码也很e ...
- [剑指offer]面试题5:从尾到头打印链表
面试题5:从尾到头打印链表 题目:输入一个链表的头结点,从尾到头反过来打印出每个结点的值. 链表结点定义如下: struct ListNode {int m_nKey;ListNode *m_pNex ...
- 剑指Offer面试题:4.从尾到头打印链表
一 题目:从尾到头打印链表 题目:输入一个链表的头结点,从尾到头反过来打印每个结点的值. 代码实现 采用两种方法实现: (1) 不修改原列表,使用stack的方式实现 (2)修改原列表,对元列表逆序 ...
最新文章
- Entity Framework 实体关系总结:one-to-one, one-to-many, many-to-many
- 微信小程序源码下载链接
- php 不喜欢用对象,为什么PHP不在其默认库中使用对象?
- 其他机器无法访问php,PHP 局域网其他机器无法访问的问题
- Jackson高级操作————流式API与JsonGenerator、JsonParser
- 没想到我的粉丝里还有这么多C++er,瑞思拜!
- 计算机组成安徽大学,2安徽大学《计算机组成与结构》B卷及答案.pdf
- 'scipy._lib.messagestream' 以及 'scipy.interpolate.interpnd.array' 解决办法
- java一个简单的管理系统
- angularjs学习:通信
- C3P0连接池配置和实现详解
- 身份证地区码数据表-SqlServer版
- robotium和appium区别
- 成都盛铭轩:详情页怎么设计
- java 控制系统音量_用JNI实现调节win7系统音量
- 牵一只蜗牛去散步……
- SNF快速开发平台成长史V4.5-Spring.Net.Framework-SNF软件开发机器人
- 大学生面试20个经典问题及回答思路!
- 什么?你还不知道offsetX、offsetY和clientX、clientY和pageX、pageY和screenX、screenY的区别,进来唠唠
- python excel文件换题头
热门文章
- 【Microstation】第三章:Microstation三维模型构建与编辑
- 剑指offer之二叉搜索树的第K个节点
- 电脑配置java编译报错_java 编译错误
- python 查看当前目录_Python的武器库11:os模块
- node中间件mysql_nodejs 中使用mysql数据有没有类似 mongoose 的中间件?
- 截取指定字符前_VBA学习笔记35-1:字符串拆分与组合
- 华为怎么删除自带的音乐_原来华为手机相册隐藏剪辑功能!按下这个开关,还能制作音乐相册...
- 物理学上最厉害的54个男人!2400年来难以超越,没想到聚在一起后这么震撼......
- 女朋友在家是怎么利用我的模型的​
- 让TA们告诉你,疫情当下如何更彪悍的成长