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

思路:二叉树的层次遍历,借助一个队列实现。

代码:

#include<iostream>
#include <vector>
#include <queue>using namespace std;struct  TreeNode {int val;struct  TreeNode    *left;struct  TreeNode    *right;TreeNode(int x) :val(x), left(NULL), right(NULL) {}
};class BinTree
{
public:TreeNode *root;TreeNode* CreateTree();void preOrder(TreeNode *r);//递归实现先序遍历void InOrder(TreeNode *r);//递归实现中序遍历void PostOrder(TreeNode *r);//递归实现后续遍历
};
TreeNode* BinTree::CreateTree()//创建一棵二叉树
{TreeNode *p1=new TreeNode(1);TreeNode *p2=new TreeNode(2);TreeNode *p3=new TreeNode(3);TreeNode *p4=new TreeNode(4);TreeNode *p5=new TreeNode(5);TreeNode *p6=new TreeNode(6);TreeNode *p7=new TreeNode(7);TreeNode *p8=new TreeNode(8);TreeNode *p9=new TreeNode(9);p1->left=p2;p1->right=p3;p2->left=p4;p2->right=p5;p5->left=p6;p3->left=p7;p3->right=p8;p8->right=p9;root=p1;return root;
}void Print(vector<int> &myarray)
{int num=myarray.size();for(int i=0; i<num;i++)cout<<myarray[i]<<"  ";cout<<endl;return;
}
vector<int> PrintFromTopToBottom(TreeNode* root)
{vector<int> res;if(root==NULL)return res;queue<TreeNode*> q;q.push(root);while(!q.empty()){res.push_back(q.front()->val);if(q.front()->left!=NULL)q.push(q.front()->left);if(q.front()->right!=NULL)q.push(q.front()->right);q.pop();}return res;
}int main()
{BinTree t;TreeNode* root=t.CreateTree();//创建二叉树vector<int>vec= PrintFromTopToBottom( root );Print(vec);return 0;
}

运行结果:

1  2  3  4  5  7  8  6  9Process returned 0 (0x0)   execution time : 0.272 s
Press any key to continue.

《剑指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:从上往下打印二叉树

    面试题23:从上往下打印二叉树 题目:从上往下打印出二叉树的每个结点,同一层的结点按照从左到右的顺序打印.例如输入图4.5中的二叉树,则依次打印出8.6.10.5.7.9.11. 二叉树结点的定义如下 ...

  7. 剑指offer面试题23:从上到下打印二叉树(树的层序遍历)

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

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

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

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

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

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

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

最新文章

  1. Linux从程序到进程
  2. hashtable源码解析
  3. 装好Centos7后提示Initial setup of CentOS Linux 7 (core)
  4. Android深度探索第五章
  5. C#中代理的简单应用
  6. JavaScript模块化编程知识分享!
  7. android-线程池-最顺手的写法
  8. 去授权美化版LM在线表白网页制作PHP源码
  9. 洛谷 P3952时间复杂度 (本地AC测评RE的伪题解)
  10. php 同时登录怎么办,php 实现同一个账号同时只能一个人登录
  11. 电商生鲜网站开发(接口文档)
  12. 关于HTML系统学习(1)
  13. 移动开发需要关心的热门技术(1)
  14. 计算机基础教案8,计算机应用基础教案8.2修饰演示文稿
  15. KMP算法的应用——碱基序列匹配
  16. 数字藏品到底有什么魔力?目前有哪些靠谱的团队在开发
  17. InfoSphere Guardium应用程序用户翻译
  18. Shell编程之循环语句与常用转义字符及一些小实验
  19. 最易出现的几种心理状态,让人崩溃!
  20. DVDRW光驱无法读DVD刻录盘

热门文章

  1. 学python对excel有用吗_程序员必修课:为什么非要用Python做数据分析?Excel不好吗?...
  2. java用一条语句判断一个整数是不是2的整数次方
  3. pandas之交叉表crosstab()
  4. flash动画制作成品_Flash如何制作雪糕被吃掉的动画
  5. cdr怎样把一张图片随意变形_如何设计一张趣味的海报?
  6. splice方法_JavaScript数组_数组方法【一】(二十六)
  7. 梯度边缘检测 matlab,梯度边缘检测matlab
  8. delphi acropdf打印多个pdf_将多个PDF文件整合成一个文件
  9. OGG工作原理(Oracle Golden Gate)
  10. onClick,onServerClick,onClientClick