链式二叉树-递归操作
来源:互联网 发布:网络支付公司 编辑:程序博客网 时间:2024/05/29 14:11
对于二叉树通常约定以前序遍历方式输入,若输入不正确是不会有什么显示的,这点要注意
假设二叉树为
1
2 4
3 5
扩展后的二叉树
1
2 4
-1 3 -1 5
-1 -1 -1 -1代码内注释要要注意:按前序方式输入数据
#include<iostream>#include<cstdio>#include<cstdlib>#include<cmath>using namespace std;typedef struct Node{struct Node *l_c,*r_c;int data;}*BitTree,NodeTree;void CreateTree(BitTree &T){//注意这里是&T要清楚指针的逻辑关系*T &T *(*T)int x;cin>>x;if(-1==x)T=NULL;else{T= new NodeTree;CreateTree(T->l_c);T->data=x;CreateTree(T->r_c);}}//树的深度 int Depth(BitTree T){if(NULL==T)return 0;int l_d=Depth(T->l_c);int r_d=Depth(T->r_c);return 1+max(l_d,r_d);}//层次遍历输出 void Level_print(BitTree T,int x){if(T==NULL||x<1)return;if(x==1){cout<<T->data<<" ";return;}Level_print(T->l_c,x-1);Level_print(T->r_c,x-1);}//层次遍历 void Level_traversal(BitTree T){if(T==NULL)return;int h=Depth(T);for(int i=1;i<=h;i++){Level_print(T,i);cout << endl;}}//前序遍历 void pre_traversal(BitTree T){if(T){cout<<T->data<<" ";pre_traversal(T->l_c);pre_traversal(T->r_c);}}//中序遍历 void mid_traversal(BitTree T){if(T){mid_traversal(T->l_c);cout<<T->data<<" ";mid_traversal(T->r_c);}}//后序遍历 void after_traversal(BitTree T){if(T){after_traversal(T->l_c);after_traversal(T->r_c);cout<<T->data<<" ";}}//主函数 int main(){BitTree T;cout<<"/** 输入说明 **/"<<endl; cout<<"/** 按前序遍历方式输入数据 **/"<<endl;cout<<"/** 首先要对二叉树进行扩展 **/"<<endl;cout<<"/** 叶子结点下边要补俩-1 -1 **/"<<endl;cout<<"/** 当每个叶子结点都是-1时数据就输入完了 **/"<<endl; cout<<"/** 例如:1 2 -1 3 -1 -1 4 -1 5 -1 -1回车 **/"<<endl; cout<<endl;cout<<"请输入数据:"<<endl; CreateTree(T);cout<<"树的高度"<<endl;cout<<Depth(T)<<endl;cout<<"层次遍历"<<endl; Level_traversal(T);cout<<endl;cout<<"前序遍历"<<endl; pre_traversal(T);cout<<endl;cout<<"中序遍历"<<endl; mid_traversal(T);cout<<endl;cout<<"后序遍历"<<endl; after_traversal(T);cout<<endl;return 0; }
阅读全文
1 0
- 链式二叉树-递归操作
- 二叉树-链式-递归实现
- 二叉树操作链式实现
- 链式二叉树的递归与遍历
- 二叉树链式存储及相关操作
- BinarySearchTree(1)二叉查找树链式递归实现
- BinarySearchTree(2)二叉查找树链式非递归实现
- 二叉树的链式结构递归遍历实现
- 二叉树的链式结构的非递归遍历
- 完全二叉树 链式 非递归 插入建树
- 二叉树的链式存储的递归和非递归遍历
- 数据结构--二叉树--中序递归遍历二叉树(链式结构)
- 数据结构--二叉树--中序非递归遍历二叉树(链式结构)
- 数据结构--二叉树--中序非递归遍历二叉树(链式结构)2
- 二叉链表(链式二叉树)的非递归创建
- 数据结构——二叉树的链式存储操作集合
- 链式存储的二叉树的操作思想示意
- 严蔚敏 数据结构 二叉树链式存储结构 遍历等操作
- KVC KVO的理解
- java开发系统内核:实现窗口图形绘制API
- maven 笔记-依赖管理
- Read N Characters Given Read4
- Spring技术内幕——深入解析Spring架构与设计原理(五)Spring与远端调用
- 链式二叉树-递归操作
- 使用Kettle工具通过执行SQL脚本的形式来实现导入到MySQL数据库
- RxLifecycle防内存泄漏分析
- BBB玩机(二)编译环境设置
- Python笔记
- gzip:stdin:not in gzip format
- [bzoj4936]Match
- HDU-1754 I Hate It(线段树求区间最值)
- Android RecyclerView 使用完全解析 体验艺术般的控件