二叉树算法
来源:互联网 发布:js 数组取最后一个 编辑:程序博客网 时间:2024/06/10 05:09
#include <iostream>#include <stdio.h>using namespace std;typedef struct BiTNode{ char data; struct BiTNode *lchild,*rchild;}BiTNode,*BiTree;BiTree createBiTree(BiTree T){ char ch; cin>>ch; if(ch=='#') return NULL; else { T=new BiTNode; T->data=ch; T->lchild=createBiTree(T->lchild); T->rchild=createBiTree(T->rchild); } return T;}/*BiTree createBiTree(){ BiTree T; char ch; cin>>ch; if(ch=='#') return NULL; else { T=new BiTNode; T->data=ch; T->lchild=createBiTree(); T->rchild=createBiTree(); } return T;}*/ //中序遍历 void inTraverse(BiTree T) { if(T) { inTraverse(T->lchild); cout<<T->data<<" "; inTraverse(T->rchild); } } //先序遍历 void preTraverse(BiTree T) { if(T) { cout<<T->data<<" "; preTraverse(T->lchild); preTraverse(T->rchild); } } //后序遍历 void postTraverse(BiTree T) { if(T) { postTraverse(T->lchild); postTraverse(T->rchild); cout<<T->data<<" "; } } //层次遍历 void levelTraverse(BiTree T) { BiTree p[100]; int f=0,r=0; if(T) { p[r++]=T; while(f!=r) { cout<<p[f]->data<<" "; if(p[f]->lchild) p[r++]=p[f]->lchild; if(p[f]->rchild) p[r++]=p[f]->rchild; f++; } } } //求结点数目 int getNodes(BiTree T) { if(!T) return 0; return getNodes(T->lchild)+getNodes(T->rchild)+1; } //求叶子结点数 int getleave(BiTree T) { if(!T) return 0; if(!T->lchild&&!T->rchild) return 1; return getleave(T->lchild)+getleave(T->rchild); } //求树的深度 int depth(BiTree T) { int ld,rd; if(!T) return 0; ld=depth(T->lchild); rd=depth(T->rchild); return ld>rd?ld+1:rd+1; }int main(){ BiTree T; T=createBiTree(T);//T=createBiTree();函数功能不需要参数时,形参就可以省写 cout<<"先序遍历序列为"<<endl; preTraverse(T); cout<<endl; cout<<"中序遍历序列为"<<endl; inTraverse(T); cout<<endl; cout<<"后序遍历序列为"<<endl; postTraverse(T); cout<<endl; cout<<"层次遍历序列为"<<endl; levelTraverse(T); cout<<endl; cout<<"结点总数为"<<getNodes(T)<<endl; cout<<"叶子结点总数为"<<getleave(T)<<endl; cout<<"树的深度为"<<depth(T)<<endl; return 0;}
阅读全文
0 0
- 线索二叉树算法
- 数据结构-二叉树算法
- 【算法】二叉树
- 二叉树相关算法
- 二叉树相关算法
- 二叉树深度算法
- 二叉树算法
- 二叉树算法
- 二叉树相关算法
- 二叉树算法
- 线索二叉树算法
- 二叉树遍历算法
- 二叉树遍历算法
- 二叉树算法总结
- 二叉树算法
- 二叉树遍历算法
- 二叉树排序算法
- 二叉树遍历算法
- Apollo 在Windows下安装使用
- shaodowsocks配置
- Node.js应用实战和工作原理解析
- mui初级入门教程(一)— 小白入手mui的学习路线
- ORA-01555 快照过久说明
- 二叉树算法
- 使用ros_bridge获取深度数据
- Python_用户输入和while循环
- 20171109
- 我的第一篇csdn博客
- 一个千万量级的APP使用的一些第三方库
- Linux 系统中 NumPy 编程环境
- 在项目开发中使用Redis作缓存
- 向碎片化宣战,共享经济下诞生运营商级LoRa网络CLAA