二叉树
2016-04-10 09:30
281 查看
typedef struct BiTNode { TElemType data; struct BiTNode *lchild, *rchild; }BiTNode, *BiTree;
Status InitBiTree(BiTree *T) { *T = NULL; return OK; } void DestroyBiTree(BiTree *T) { if (*T) { if ((*T)->lchild) DestroyBiTree(&(*T)->lchild); if((*T)->rchild) DestroyBiTree(&(*T)->rchild); free(*T); *T = NULL; } } /* 按前序输入二叉树中结点的值(一个字符) */ /* #表示空树,构造二叉链表表示二叉树T。 */ void CreateBiTree(BiTree *T) { TElemType ch; scanf("%c", &ch); if (ch == '#') *T = NULL; else { *T = (BiTree)malloc(sizeof(BiTNode)); if (!*T) exit(OVERFLOW); (*T)->data = ch; CreateBiTree(&(*T)->lchild); CreateBiTree(&(*T)->rchild); } } Status BiTreeEmpty(BiTree T) { if (T) return FALSE; else return TRUE; } int BiTreeDepth(BiTree T) { int i, j; if (!T) return 0; if (T->lchild) i = BiTreeDepth(T->lchild); else i = 0; if (T->rchild) j = BiTreeDepth(T->rchild); else j = 0; return i >= j ? i + 1 : j + 1; } void PreOrderTraverse(BiTree T) { if (T == NULL) return; printf("%d", T->data); PreOrderTraverse(T->lchild); PreOrderTraverse(T->rchild); } void InOrderTraverse(BiTree T) { if (T == NULL) return; InOrderTraverse(T->rchild); printf("%d", T->data); InOrderTraverse(T->rchild); } void PostOrderTraverse(BiTree T) { if (T == NULL) return; PostOrderTraverse(T->lchild); PostOrderTraverse(T->rchild); printf("&d", T->data); }
相关文章推荐
- 安装MySQL
- 1.Two Sum(双指针的使用)
- 【机器学习详解】矩阵奇异值分解(SVD)及其应用
- PHP设计模式——訪问者模式
- 用PS制作网站上的动态广告栏
- tomcat(4)Tomcat的默认连接器
- 快速查看Mysql数据库数据文件存放地址
- myeclipse 自动添加头时间,作者,文件注释
- LightOJ1089
- 输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
- Educational Codeforces Round 11 C. Hard Process 二分
- shuffle 过程map与reduce交换数据过程的关键
- Android 深入理解Android中的自定义属性
- 斯坦福课程总结一
- LeetCode *** 190. Reverse Bits
- centos7搭建hadoop集群
- 详解如何建立Qt插件学习教程
- win8.1系统不能设置使用小键盘该怎么办?
- Mark
- QT插件开发方式