二叉树模板
2016-08-26 09:31
429 查看
#include <stdio.h> #include <stdlib.h> #define ElemType char //节点声明,数据域、左孩子指针、右孩子指针 typedef struct BiTNode { char data; struct BiTNode *lchild,*rchild; } BiTNode,*BiTree; //先序建立二叉树 char a[100]; int i; BiTree CreatBiTree() { char ch; BiTNode *T; if(a[i++]==',') T=NULL; else { T = (BiTree)malloc(sizeof(BiTNode)); T->data = a[i-1]; T->lchild = CreatBiTree(); T->rchild = CreatBiTree(); } return T;//返回根节点 } //先序遍历二叉树 void PreOrderTraverse(BiTree T) { if(T) { printf("%c",T->data); PreOrderTraverse(T->lchild); PreOrderTraverse(T->rchild); } } //中序遍历 void InOrderTraverse(BiTree T) { if(T) { InOrderTraverse(T->lchild); printf("%c",T->data); InOrderTraverse(T->rchild); } } //后序遍历 void PostOrderTraverse(BiTree T) { if(T) { PostOrderTraverse(T->lchild); PostOrderTraverse(T->rchild); printf("%c",T->data); } } //层序遍历 void Cengxu(BiTree T) { if (T==NULL) return ; else { BiTree q[10000]; int s = 0,e = 0; q[e++] = T; while (s!=e) { BiTree p = q[s++]; printf ("%c",p->data); if (p->lchild != NULL) q[e++] = p->lchild; if (p->rchild != NULL) q[e++] = p->rchild; } } } //求叶子节点个数 int Leave (struct BiTNode *T) { if (T==NULL) return 0; if (T->lchild==NULL&&T->rchild==NULL) return 1; else return Leave(T->lchild)+Leave(T->rchild); } //计算二叉树的深度 int Depth(BiTree T) { int d=0,depthl,depthr; if (T==NULL) return 0; if (T->lchild==NULL&&T->rchild==NULL) return 1; depthl = Depth(T->lchild); depthr = Depth(T->rchild); if (depthl > depthr) d = depthl; else d = depthr; return d+1; } int main() { while (~scanf ("%s",a)) { i=0; int k,d; BiTree T; T = CreatBiTree();//建立 PreOrderTraverse(T); printf ("\n"); InOrderTraverse(T); printf ("\n"); PostOrderTraverse(T); printf ("\n"); Cengxu(T); printf ("\n"); k = Leave(T); printf("%d\n",k); d = Depth(T); printf ("%d\n",d); getchar(); } return 0; }
相关文章推荐
- 安全登录一天内连续输入密码错误3次,第二天才能登录
- apache开启https
- 解决ajax回调方法返回当前html的问题
- 数据显示:即使在家中,手机也是最受欢迎的设备
- AJAX 大全
- C++中的英文专业词汇
- IBase的几个常用函数
- 多线程编程2 - NSOperation
- 数据显示:即使在家中,手机也是最受欢迎的设备
- 注册表编程
- Retrofit+RxJava 优雅的处理服务器返回异常、错误
- python google-glog功能介绍
- QT访问QSqlite数据库的实例
- 中断和轮询方式比较
- Tomcat 配置详解/优化方案
- iOS7的界面上移问题
- 未来5年互联网,运营将成比产品更加有前途的职业?
- 07盒子模型和结构样式
- 07盒子模型和结构样式
- leetcode No123. Best Time to Buy and Sell Stock III