题目:

从上往下打印出二叉树的每个节点,同层节点从左至右打印。

知识点:

  • 像这种不是按照指针顺序打印的都需要引入辅助空间,由于分析可知,先进先出,因此我们引入了两端都可进出的队列deque,常用操作,deque.front(),back(),push_back(),pop_back()等

注意:

代码实现:

借助辅助队列,弹出队列头节点的同时,在队列后压入头节点的左右子节点,循环至队列中无元素 。

/*从上到下打印二叉树*/
vector<int> PrintFromTopToBottom(BinaryTreeNode* root) {//创建辅助队列deque<BinaryTreeNode* > fzDeque;vector<int> res;//特殊情况if (root == nullptr)return res;fzDeque.push_back(root);//循环至辅助队列为空while (fzDeque.size()){BinaryTreeNode* pHead = fzDeque.front();//将头结点的值放入res中res.push_back(pHead->m_nValue);//将头结点的左右子树放入fzDequeif (pHead->m_pLeft) {fzDeque.push_back(pHead->m_pLeft);}if(pHead->m_pRight)fzDeque.push_back(pHead->m_pRight);//弹出头结点fzDeque.pop_front();}return res;
}int main()
{/*从上到下打印二叉树*/BinaryTreeNode* pNode10 = CreateBinaryTreeNode(10);BinaryTreeNode* pNode6 = CreateBinaryTreeNode(6);BinaryTreeNode* pNode14 = CreateBinaryTreeNode(14);BinaryTreeNode* pNode4 = CreateBinaryTreeNode(4);BinaryTreeNode* pNode8 = CreateBinaryTreeNode(8);BinaryTreeNode* pNode12 = CreateBinaryTreeNode(12);BinaryTreeNode* pNode16 = CreateBinaryTreeNode(16);ConnectTreeNodes(pNode10, pNode6, pNode14);ConnectTreeNodes(pNode6, pNode4, pNode8);ConnectTreeNodes(pNode14, pNode12, pNode16);vector<int> res = PrintFromTopToBottom(pNode10);for (int n = 0; n < res.size(); n++)cout << res[n] << " ";getchar();return 0;
}

剑指offer——32.从上到下打印二叉树相关推荐

  1. 剑指 Offer 32 . 从上到下打印二叉树

    main函数测试代码: 按标准输入输出,比如输入: 3,9,20,null,null,15,7 public static void main(String[] args) {//输入3,9,20,n ...

  2. 剑指offer 32. 从上到下打印二叉树

    声明:本系列博客是对何海涛<剑指offer>的关键点总结. 1.不分行从上到下打印二叉树 1.1. 问题描述 从上到下打印出二叉树的每一个结点,同一层的结点按照从左到右的顺序打印. 如二叉 ...

  3. 《剑指offer》-- 从上往下打印二叉树、二叉搜素树的后序遍历、二叉树中和为某一值的路径、二叉树与双向链表

    一.从上往下打印二叉树: 1.题目: 上往下打印出二叉树的每个节点,同层节点从左至右打印. 2.解题思路: 用arraylist模拟一个队列来存储相应的TreeNode. 3.代码实现: public ...

  4. 《剑指offer》从上往下打印二叉树

    题目:从上往下打印出二叉树的每个节点,同层节点从左至右打印. 解析:此题利用队列可以很好的解决层次打印,只需要按顺序入队以及出队就可以了(一点说明:root为null的时候需要考虑,java中的队列是 ...

  5. 剑指offer之从上到下打印二叉树

    从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印. 例如: 给定二叉树: [3,9,20,null,null,15,7], 返回: [3,9,20,15,7] 来源:力扣(LeetC ...

  6. 剑指Offer之从上往下打印二叉树

    题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印. 解题思路 二叉树的层次遍历,水题...有一个坑:如果root是空的,直接返回空vector,一定要注意边界条件!!!!!!!!! AC ...

  7. 剑指offer:从上往下打印二叉树

    文章目录 分析 来源 分析 思路 典型的bfs模板题,这里使用STL中的queue,没用数组模拟队列. STL的思路:初始化队列时,根root入队:对于bfs主体过程while循环内,取队头元素,队头 ...

  8. 《剑指Offer》 从上往下打印出二叉树

    题目描述: 从上往下打印出二叉树的每个节点,同层节点从左至右打印. 思路: 其实就是层序遍历,设置一个TreeNode*类型的队列s,用来保存二叉树层序遍历的节点,因为队列是先进先出,所以很好地控制了 ...

  9. 剑指offer23:从上到下打印二叉树

    题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印. 解题思路 用队列来实现: 从根节点开始,每次打印一个节点都判断该节点是否有子节点,如果有则放在队列末端: 取出队列最前面的节点,重复1 ...

最新文章

  1. python pandas 如何找到NaN、缺失值或者某些元素的索引名称以及位置,np.where的使用
  2. 0x54. 动态规划 - 树形DP(习题详解 × 12)
  3. 某生鲜电商平台的监控模块设计
  4. 小米路由器sn算ssh密码_【玩转路由】小米路由器开启SSH
  5. android 搭建短信平台,Android 短信SDK集成文档 | Mob文档中心
  6. 【SpringCloud】Spring Cloud bus
  7. 自动生成的sitemap.html乱码,任意网站添加生成sitemap地图
  8. Linux服务器安装JavaWeb环境(二) Redis,MySql,Zookeeper,Keepalive
  9. centos查看yum上jdk的版本
  10. matlab求数组转置,数组与矩阵运算 - MATLAB Simulink - MathWorks 中国
  11. FPGA——按键消抖
  12. SIFT四部曲之——方向角度确定
  13. phaser H5游戏框架的学习相关推荐教程
  14. 小狮子荣光不复 瑞星信息去年亏损7300万元
  15. c语言 运算符op,1 简单计算器。请编写一个程序计算表达式:datal op data2的值。其中op为运算符+、—、*、/。...
  16. Chapter5 初始化(Initialization)
  17. 有了这几招,再也不怕背不过课本了!
  18. 为什么TCP存在重传
  19. 快解析结合象过河erp
  20. 迎接现代物流新阶段计算物流智能配送

热门文章

  1. Django - 日期、时间字段
  2. JS事件冒泡和事件捕获
  3. maven依赖包和依赖仓库(1)
  4. [CF808B] Average Sleep Time([强行]树状数组,数学)
  5. C#中判断服务器图片是否存在
  6. 《Entity Framework 6 Recipes》中文翻译系列 (45) ------ 第八章 POCO之获取原始对象与手工同步对象图和变化跟踪器...
  7. ZOJ 3867 Earthstone: Easy Version
  8. [Usaco2014 Open]Gold Fair Photography(hash)
  9. Eclips下运行helloworld,弹出手机模拟器上什么也没有
  10. 数据库 一致性读当前读