面试题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:从上往下打印二叉树相关推荐

  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:从上到下打印二叉树(树的层序遍历)

    题目:从上往下打印出二叉树的每个节点,同一层的结点按照从左往右的顺序打印. 解题思路:二叉树的层序遍历,在打印一个节点的时候,要把他的子节点保存起来打印第一层要把第二层的节点保存起来, 打印第二层要把 ...

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

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

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

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

  9. 剑指Offer面试题:4.从尾到头打印链表

    一 题目:从尾到头打印链表 题目:输入一个链表的头结点,从尾到头反过来打印每个结点的值. 代码实现 采用两种方法实现: (1) 不修改原列表,使用stack的方式实现 (2)修改原列表,对元列表逆序 ...

最新文章

  1. Entity Framework 实体关系总结:one-to-one, one-to-many, many-to-many
  2. 微信小程序源码下载链接
  3. php 不喜欢用对象,为什么PHP不在其默认库中使用对象?
  4. 其他机器无法访问php,PHP 局域网其他机器无法访问的问题
  5. Jackson高级操作————流式API与JsonGenerator、JsonParser
  6. 没想到我的粉丝里还有这么多C++er,瑞思拜!
  7. 计算机组成安徽大学,2安徽大学《计算机组成与结构》B卷及答案.pdf
  8. 'scipy._lib.messagestream' 以及 'scipy.interpolate.interpnd.array' 解决办法
  9. java一个简单的管理系统
  10. angularjs学习:通信
  11. C3P0连接池配置和实现详解
  12. 身份证地区码数据表-SqlServer版
  13. robotium和appium区别
  14. 成都盛铭轩:详情页怎么设计
  15. java 控制系统音量_用JNI实现调节win7系统音量
  16. 牵一只蜗牛去散步……
  17. SNF快速开发平台成长史V4.5-Spring.Net.Framework-SNF软件开发机器人
  18. 大学生面试20个经典问题及回答思路!
  19. 什么?你还不知道offsetX、offsetY和clientX、clientY和pageX、pageY和screenX、screenY的区别,进来唠唠
  20. python excel文件换题头

热门文章

  1. 【Microstation】第三章:Microstation三维模型构建与编辑
  2. 剑指offer之二叉搜索树的第K个节点
  3. 电脑配置java编译报错_java 编译错误
  4. python 查看当前目录_Python的武器库11:os模块
  5. node中间件mysql_nodejs 中使用mysql数据有没有类似 mongoose 的中间件?
  6. 截取指定字符前_VBA学习笔记35-1:字符串拆分与组合
  7. 华为怎么删除自带的音乐_原来华为手机相册隐藏剪辑功能!按下这个开关,还能制作音乐相册...
  8. 物理学上最厉害的54个男人!2400年来难以超越,没想到聚在一起后这么震撼......
  9. 女朋友在家是怎么利用我的模型的​
  10. 让TA们告诉你,疫情当下如何更彪悍的成长