题目描述

从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。

/*
struct TreeNode {int val;struct TreeNode *left;struct TreeNode *right;TreeNode(int x) :val(x), left(NULL), right(NULL) {}
};
*/
class Solution {
public:vector<vector<int> > Print(TreeNode* pRoot) {              deque<TreeNode*> PrintOnLayer;vector<vector<int> > res;if(pRoot==NULL)            //需判断树是否为空return res;vector<int> vec;PrintOnLayer.push_back(pRoot);int toBePrint=1;           //表示当前层中还有没有打印的结点int NextLayerNode=0;       //下一层结点的数目while(!PrintOnLayer.empty()){TreeNode* pNode=PrintOnLayer.front();PrintOnLayer.pop_front();vec.push_back(pNode->val);toBePrint--;if(pNode->left)          //注意NextLayerNode在该层未打印完之前,若被打印的两个结点分别左右子节点,{                      //NextLayerNode会增加到4。。。注意理解NextLayerNode++;      PrintOnLayer.push_back(pNode->left);   }if(pNode->right){NextLayerNode++;PrintOnLayer.push_back(pNode->right);   }  if(toBePrint==0){toBePrint=NextLayerNode;NextLayerNode=0;res.push_back(vec);         //将每一层的数以vecror的形式存取到res中vec.clear();               //每一层打印完毕后需要将vec清除}}return res;}
};

剑指offer面试题[60]-将二叉树打印成多行相关推荐

  1. 剑指offer(C++)-JZ78:把二叉树打印成多行(数据结构-树)

    作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 题目描述: 给定一个节点数为 n 二叉树,要求从上到下按层打印二叉树的 val 值,同一层结点从 ...

  2. 剑指offer——面试题60:把二叉树打印成多行

    剑指offer--面试题60:把二叉树打印成多行 Solution1: 20180911重做.经典题目.牢记做法! /* struct TreeNode {int val;struct TreeNod ...

  3. 剑指offer编程试题Java实现--60.把二叉树打印成多行

    个人博客:小景哥哥 60.把二叉树打印成多行 题目描述 从上到下按层打印二叉树,同一层结点从左至右输出.每一层输出一行. import java.util.ArrayList; import java ...

  4. 剑指offer——面试题58:二叉树的下一个结点

    剑指offer--面试题58:二叉树的下一个结点 这个题要认真分析一下... Solution1: 自己想出来的破算法 /* struct TreeLinkNode {int val;struct T ...

  5. 剑指offer——面试题39:二叉树的深度

    剑指offer--面试题39:二叉树的深度 20180906整理 Solution1: 再本题中树的定义:若二叉树只有一个根节点,则此二叉树的深度为1. 迭代法,哈哈哈 /* struct TreeN ...

  6. 【重点】剑指offer——面试题25:二叉树中和为某一值的路径

    剑指offer--面试题25:二叉树中和为某一值的路径 参考网址:https://www.nowcoder.com/profile/5488508/codeBookDetail?submissionI ...

  7. 【递归】剑指offer——面试题19:二叉树的镜像

    剑指offer--面试题19:二叉树的镜像 Solution1: 递归解法,牢记! 根结点为空的情况容易漏,注意! /* struct TreeNode {int val;struct TreeNod ...

  8. 剑指offer——面试题20:顺时针打印矩阵

    剑指offer--面试题20:顺时针打印矩阵 Solution1: 可参考leetCode 54题的解法 书上的思路特别好,学习之~ class Solution { public:vector< ...

  9. 剑指offer面试题6 重建二叉树(java)

    注:(1)java中树的构建 (2)构建子树时可以直接利用Arrays.copyOfRange(preorder, from, to),这个方法是左开右闭的 1 package com.xsf.Sor ...

最新文章

  1. iOS网络缓存扫盲篇--使用两行代码就能完成80%的缓存需求
  2. SVN 文件的解锁方法
  3. TypeScript 素描 - 函数
  4. mariadb 没有mysql表_数据未插入mySQL表(MariaDB)
  5. 【javascript 动态添加数据到 HTML 页面】
  6. 主成分分析(PCA)-最大方差解释
  7. 国外html游戏发展历史,17个国外游戏行业的网页设计欣赏
  8. java soap api操作和发送soap消息
  9. 日期上午下午怎么用date存_Java12都要出来了,你还在使用Date操作日期吗?
  10. 【codevs1073】家族
  11. [iOS] HealthKit 睡眠分析
  12. U盘插入电脑说要格式化,但电脑又说“磁盘被写保护,无法格式化”,如何解决
  13. android表情动画制作,GIF动态表情制作app
  14. python爬虫之xpath解析(附实战)
  15. android游戏后台运行点击桌面游戏图标游戏重启的解决方法
  16. Activiti7笔记(二)Activiti7一共涉及到25张表,哪些操作会涉及哪些表,每张表的作用是什么
  17. iPhone/iPad 传输文件/照片到电脑 - 实践
  18. 动画 | 大学四年结束之前必须透彻的排序算法
  19. python—基础练习2
  20. PCL:StatisticalOutlierRemoval 统计滤波

热门文章

  1. 57. TCP relay功能描述及Python实现
  2. redis怎么开启_关于Redis数据库入门必备的学习点
  3. python 复制文件并重命名_潘石屹都开始学Python了,你还有什么理由放弃?
  4. c语言gui程序,GUI编程
  5. matlab 小波启发式阈值滤波,小波阈值去噪
  6. C/C++头文件全解析
  7. 机器视觉专用照明光源
  8. 机器视觉LED光源的选择及其性能优势
  9. 为什么我会觉得SegmentFault做得越来越力不从心了?
  10. 手机平板巡检系统,掀起设备巡检的第2次革命