20170514_建立二叉树+前序遍历+层序遍历+栈+队列
来源:互联网 发布:网络自媒体 编辑:程序博客网 时间:2024/06/07 03:48
20170514_建立二叉树+前序遍历+层序遍历+栈+队列
//102. Binary Tree Level Order Traversal /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */#include<iostream>#include<vector>#include<queue>#include<algorithm>using namespace std;const int SIZE=1000;struct TreeNode{int val;TreeNode *left;TreeNode *right;TreeNode(int x):val(x),left(NULL),right(NULL) {}};//建立二叉树void CreatBiTree(TreeNode * &root){int ch;cin>>ch;getchar();if(ch == -1)root=NULL;else{root=new TreeNode(ch);CreatBiTree(root->left);CreatBiTree(root->right);}}//前序遍历二叉树(使用的是栈stack)void PreOrder(TreeNode *root){TreeNode *s[SIZE];int top=-1;while(root != NULL || top != -1){while(root != NULL){cout<<root->val<<" ";s[++top]=root;root=root->left;}if(top != -1){root=s[top--];root=root->right;}}}//中序遍历二叉树(使用的是队列queue)void LevelOrder(TreeNode *root){TreeNode *Q[SIZE];int front=0;int rear=0;if(root==NULL)return;Q[++rear]=root;while(front != rear){//auto q=Q[++front];TreeNode *q=Q[++front];cout<<q->val<<" ";if(q->left != NULL)Q[++rear]=q->left;if(q->right != NULL)Q[++rear]=q->right;}}//层序遍历class Solution{public: vector<vector<int>> levelOrder(TreeNode *root)//二维数组{vector<vector<int>> result;if(root==NULL)return result;queue<TreeNode *> q;q.push(root);while(!q.empty()){int num=q.size();vector<int> ivec;for(int i=0;i<num;++i){TreeNode *top=q.front();ivec.push_back(top->val);q.pop();if(top->left != NULL)q.push(top->left);if(top->right != NULL)q.push(top->right);}result.push_back(ivec);}//输出for(auto &cow:result){cout<<"[";auto beg=cow.begin();for(;beg!=--cow.end();++beg)cout<<*beg<<",";cout<<*beg<<"]";cout<<",";}return result;}};int main(){TreeNode *root;cout<<"依次输入二叉树的结点数据:"<<endl;CreatBiTree(root);cout<<"二叉树建立完成."<<endl;//cout<<"前序遍历二叉树."<<endl;//PreOrder(root);//cout<<"\n前序遍历二叉树完成."<<endl;//cout<<"层序遍历二叉树."<<endl;//LevelOrder(root);//cout<<"\n层序遍历二叉树完成."<<endl;cout<<"Solution类的层序遍历二叉树."<<endl;Solution example;vector<vector<int>> result;result=example.levelOrder(root);//for(auto &row:result)//for(auto ele:row)//cout<<ele<<" ";cout<<endl;system("pause");return 0;}
0 0
- 20170514_建立二叉树+前序遍历+层序遍历+栈+队列
- 20170816_二叉树的建立+前序遍历+中序遍历+后序遍历+层序遍历
- 类似前序遍历 建立二叉树
- 二叉树建立及前序遍历
- 前序遍历建立二叉树
- 根据前序遍历和后续遍历建立二叉树
- 根据前序/后序/层序+中序遍历序列建立二叉树
- 二叉树的前/中/后/层序遍历(前/中/后序递归实现,层序队列实现)
- 建立二叉树,实现二叉树的层序遍历
- C++数据结构--二叉树的建立,前序遍历,中序遍历和后序遍历
- 二叉树的建立,前序遍历,中序遍历,后序遍历
- 二叉树建立,前序遍历,中序遍历,后序遍历 思路
- 二叉树的建立以及前序遍历、中序遍历、后序遍历
- 编程实现二叉树的建立,前序遍历,中序遍历和后续遍历
- 二叉链表的建立和遍历 完整的前,中,后和层序建立和遍历
- java版本_二叉树(前序遍历,中序遍历,后续遍历)
- 二叉树的建立和前序遍历
- C++二叉树的前序建立与前中后遍历
- jQuery实现超链接提示和图片提示效果
- 如何防止头文件被重复包含或引用?
- Linux下的环境部署和项目发布
- Google Java编程风格指南
- HBuilder表单提交php出现内部服务器错误
- 20170514_建立二叉树+前序遍历+层序遍历+栈+队列
- 第2章 编程问题 2.2节 3
- 数据库连接池
- python实现读Excel写入.txt
- 搭建python IDE
- visual studio 2017 xamarin 的性能小疑问
- Unity Update优化
- Qt:通过QML Profiler分析程序性能问题
- Android:内存泄露的发现