《剑指offer》面试题23——从上往下打印二叉树
从上往下打印出二叉树的每个节点,同层节点从左至右打印。
思路:二叉树的层次遍历,借助一个队列实现。
代码:
#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——从上往下打印二叉树相关推荐
- 剑指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:从上往下打印二叉树 题目:从上往下打印出二叉树的每个结点,同一层的结点按照从左到右的顺序打印.例如输入图4.5中的二叉树,则依次打印出8.6.10.5.7.9.11. 二叉树结点的定义如下 ...
- 剑指offer面试题23:从上到下打印二叉树(树的层序遍历)
题目:从上往下打印出二叉树的每个节点,同一层的结点按照从左往右的顺序打印. 解题思路:二叉树的层序遍历,在打印一个节点的时候,要把他的子节点保存起来打印第一层要把第二层的节点保存起来, 打印第二层要把 ...
- 面试题23_从上往下打印二叉树
题目描写叙述: 从上往下打印出二叉树的每一个节点.同层节点从左至右打印. 解题思路: 这道题考查二叉树的层次遍历. 对于二叉树的先序遍历.中序遍历.兴许遍历.我们都比較熟悉,用递归方法实现,代码也很e ...
- [剑指offer]面试题5:从尾到头打印链表
面试题5:从尾到头打印链表 题目:输入一个链表的头结点,从尾到头反过来打印出每个结点的值. 链表结点定义如下: struct ListNode {int m_nKey;ListNode *m_pNex ...
- 剑指Offer面试题:4.从尾到头打印链表
一 题目:从尾到头打印链表 题目:输入一个链表的头结点,从尾到头反过来打印每个结点的值. 代码实现 采用两种方法实现: (1) 不修改原列表,使用stack的方式实现 (2)修改原列表,对元列表逆序 ...
最新文章
- Linux从程序到进程
- hashtable源码解析
- 装好Centos7后提示Initial setup of CentOS Linux 7 (core)
- Android深度探索第五章
- C#中代理的简单应用
- JavaScript模块化编程知识分享!
- android-线程池-最顺手的写法
- 去授权美化版LM在线表白网页制作PHP源码
- 洛谷 P3952时间复杂度 (本地AC测评RE的伪题解)
- php 同时登录怎么办,php 实现同一个账号同时只能一个人登录
- 电商生鲜网站开发(接口文档)
- 关于HTML系统学习(1)
- 移动开发需要关心的热门技术(1)
- 计算机基础教案8,计算机应用基础教案8.2修饰演示文稿
- KMP算法的应用——碱基序列匹配
- 数字藏品到底有什么魔力?目前有哪些靠谱的团队在开发
- InfoSphere Guardium应用程序用户翻译
- Shell编程之循环语句与常用转义字符及一些小实验
- 最易出现的几种心理状态,让人崩溃!
- DVDRW光驱无法读DVD刻录盘
热门文章
- 学python对excel有用吗_程序员必修课:为什么非要用Python做数据分析?Excel不好吗?...
- java用一条语句判断一个整数是不是2的整数次方
- pandas之交叉表crosstab()
- flash动画制作成品_Flash如何制作雪糕被吃掉的动画
- cdr怎样把一张图片随意变形_如何设计一张趣味的海报?
- splice方法_JavaScript数组_数组方法【一】(二十六)
- 梯度边缘检测 matlab,梯度边缘检测matlab
- delphi acropdf打印多个pdf_将多个PDF文件整合成一个文件
- OGG工作原理(Oracle Golden Gate)
- onClick,onServerClick,onClientClick