20170816_二叉树的建立+前序遍历+中序遍历+后序遍历+层序遍历
来源:互联网 发布:淘宝店铺可以转吗 编辑:程序博客网 时间:2024/06/03 11:16
20170816_二叉树的建立+前序遍历+中序遍历+后序遍历+层序遍历
/*二叉树的建立_前序_中序_后序_层序*//*判断一颗二叉树是不是平衡二叉树?*/#include<iostream>#include<vector>#include<stack>#include<queue>#include<algorithm>#include<numeric>#include<functional>using namespace std;struct BiTreeNode{int val;BiTreeNode *pLeft;BiTreeNode *pRight;BiTreeNode(int x):val(x),pLeft(nullptr),pRight(nullptr) {}};//创建二叉树void CreatBiTree(BiTreeNode * &root){int ch;cin>>ch;getchar();if(ch == -1){root=NULL;}else{root=new BiTreeNode(ch);CreatBiTree(root->pLeft);CreatBiTree(root->pRight);}}//1、前序遍历二叉树:借助栈stackvoid PreOrder(BiTreeNode *root){if(root==nullptr)return;stack<BiTreeNode *> s;while(root != nullptr || !s.empty()){while(root != nullptr){cout<<root->val<<" ";s.push(root);root=root->pLeft;}if(!s.empty()){root=s.top();s.pop();root=root->pRight;}}}//2、中序遍历二叉树:借助栈stackvoid Inorder(BiTreeNode *root){if(root==nullptr)return;stack<BiTreeNode *> s;while(root != nullptr || !s.empty()){while(root != nullptr){s.push(root);root=root->pLeft;}if(!s.empty()){root=s.top();s.pop();cout<<root->val<<" ";root=root->pRight;}}}//3、后序遍历二叉树:递归遍历方法void PostOrder(BiTreeNode *root){if(root==nullptr)return;else{PostOrder(root->pLeft);PostOrder(root->pRight);cout<<root->val<<" ";}}//4、层序遍历二叉树:借助队列queuevoid LevelOredr(BiTreeNode *root){if(root==nullptr)return;queue<BiTreeNode *> q;BiTreeNode *top;q.push(root);while(!q.empty()){top=q.front();cout<<top->val<<" ";q.pop();if(top->pLeft != nullptr)q.push(top->pLeft);if(top->pRight != nullptr)q.push(top->pRight);}}//*****************************************int main(){BiTreeNode *root;cout<<"依次输入二叉树的结点数据:"<<endl;// 10 20 -1 40 -1 -1 30 -1 -1CreatBiTree(root);cout<<"二叉树建立完成."<<endl;cout<<"前序遍历二叉树."<<endl;PreOrder(root);cout<<endl;cout<<"前序遍历二叉树完成."<<endl;cout<<"中序遍历二叉树."<<endl;Inorder(root);cout<<endl;cout<<"中序遍历二叉树完成."<<endl;cout<<"后序遍历二叉树."<<endl;PostOrder(root);cout<<endl;cout<<"后序遍历二叉树完成."<<endl;cout<<"层序遍历二叉树."<<endl;LevelOredr(root);cout<<endl;cout<<"层序遍历二叉树完成."<<endl;system("pause");return 0;}/*依次输入二叉树的结点数据:1 2 4 -1 7 -1 -1 -1 3 5 -1 -1 6 -1 -1二叉树建立完成.前序遍历二叉树.1 2 4 7 3 5 6前序遍历二叉树完成.中序遍历二叉树.4 7 2 1 5 3 6中序遍历二叉树完成.后序遍历二叉树.7 4 2 5 6 3 1后序遍历二叉树完成.层序遍历二叉树.1 2 3 4 5 6 7层序遍历二叉树完成.请按任意键继续. . .*/
阅读全文
0 0
- 20170816_二叉树的建立+前序遍历+中序遍历+后序遍历+层序遍历
- C++数据结构--二叉树的建立,前序遍历,中序遍历和后序遍历
- 二叉树的建立,前序遍历,中序遍历,后序遍历
- 二叉树的建立以及前序遍历、中序遍历、后序遍历
- 【原创】二叉树的建立与遍历(前序遍历、中序遍历、后序遍历)
- 数据结构之二叉树的前序遍历、中序遍历、后序遍历、层序遍历
- 二叉树的遍历(前序遍历、中序遍历、后序遍历)
- 二叉树的遍历 前序遍历 中序遍历 后序遍历
- 二叉树的遍历:前序遍历、中序遍历和后序遍历
- 二叉树建立,前序遍历,中序遍历,后序遍历 思路
- 树:前序建树,前序遍历,中序遍历,后序遍历,层序遍历
- 二叉链表的建立和遍历 完整的前,中,后和层序建立和遍历
- 20170514_建立二叉树+前序遍历+层序遍历+栈+队列
- C# 二叉树的非递归中序 前序 后序遍历 层序遍历
- 二叉树的创建、前/中/后序遍历、按层遍历C语言实现
- python实现二叉树的前、中、后序遍历及按层遍历
- C++实现二叉树 前序遍历, 后序遍历, 中序遍历, 层序遍历(不用递归)
- 扩展二叉树 建立 以及 前序遍历 中序遍历 后序遍历 的非递归算法
- hdu 4004 贪心 二分查找
- sort函数
- Java数据结构07----队列:顺序队列&顺序循环队列、链式队列、顺序优先队列
- 火狐浏览器安装firebug方式
- 学习笔记 --- LINUX网卡驱动框架分析
- 20170816_二叉树的建立+前序遍历+中序遍历+后序遍历+层序遍历
- 软测概述
- 海量数据处理面试题
- 数据库
- (4)nodejs学习---自定义模块
- Golang 控制并发数以及定时执行
- 块状元素和内联元素的区别
- 一头坑进Redis之五大数据类型
- PAT 1015 德才论