剑指offer——面试题23:从上往下打印二叉树(树的递归创建,广度优先搜索,队列)
2015-08-17 09:55
441 查看
题目描述:
从上往下打印出二叉树的每个节点,同层节点从左至右打印。
思路:
采用广度优先搜索的方法来做,用队列,出来一个时,将它的左右结点进队列(如果有的话)
从上往下打印出二叉树的每个节点,同层节点从左至右打印。
思路:
采用广度优先搜索的方法来做,用队列,出来一个时,将它的左右结点进队列(如果有的话)
#include<iostream> #include<vector> #include<queue> using namespace std; struct TreeNode { int va; TreeNode* left; TreeNode* right; TreeNode(int x):va(x),left(NULL),right(NULL){} }; //二叉树的先序遍历的创建,这里我将输入时空的设为1000 void producted(TreeNode** root) { int val; cin>>val; cin.ignore(numeric_limits<streamsize>::max(),'\n'); if(val==1000) { *root=NULL; return; } else *root=new TreeNode(val); producted(&(*root)->left); producted(&(*root)->right); return; } //广度优先搜索二叉树,在这里采用队列queue来做。 void print(TreeNode* root,vector<int>& vec) { if(root==NULL) return; queue<TreeNode*> qu; qu.push(root); while(!qu.empty()) { TreeNode* temp=qu.front(); qu.pop(); vec.push_back(temp->va); if(temp->left) qu.push(temp->left); if(temp->right) qu.push(temp->right); } return; } int main() { TreeNode* root; producted(&root); vector<int> vec; print(root,vec); for(vector<int>::iterator i=vec.begin();i!=vec.end();i++) cout<<*i<<' '; cout<<endl; system("pause"); }
相关文章推荐
- 常见面试题1
- 剑指offer_面试题_从上往下打印二叉树
- 剑指offer_面试题22_栈的压入、弹出序列(总结规律)
- 黑马程序员——集合(上)
- 黑马程序员——java学习16(张孝祥)——反射
- 黑马程序员——面向对象(java文档说明书)-第14天
- 剑指Offer面试题:1.实现Singleton模式
- 面试中HashMap的工作原理
- 黑马程序员——Java基础--IO流(2)
- 程序员必备技能
- 黑马程序员——java学习15(毕25)——正则表达式
- 黑马程序员——反射与正则表达式
- 打算去上海,不知道会如何?仅仅因为这个理由
- iOS常见面试 问题
- 黑马程序员——String类
- 黑马程序员 基本数据类型对象包装类
- 黑马程序员 其他对象
- 每天五个java相关面试题(2)
- 剑指offer——面试题22:栈的压入、弹出序列
- 黑马程序员——Java基础--集合框架(2)