From e43cc5a58af12ced27d286634e8895080176ceaa Mon Sep 17 00:00:00 2001 From: Xu Bai <1373953675@qq.com> Date: Fri, 19 Jul 2019 22:45:03 +0800 Subject: [PATCH] =?UTF-8?q?=E9=93=BE=E5=BC=8F=E4=BA=8C=E5=8F=89=E6=A0=91?= =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _04.树/02二叉树链式结构实现_BiTreeLink.c | 4 +- _04.树/_b.二叉树链式结构.c | 117 ++++++++++++++++++++++- 2 files changed, 119 insertions(+), 2 deletions(-) diff --git a/_04.树/02二叉树链式结构实现_BiTreeLink.c b/_04.树/02二叉树链式结构实现_BiTreeLink.c index 7dc753a..b89ef2b 100644 --- a/_04.树/02二叉树链式结构实现_BiTreeLink.c +++ b/_04.树/02二叉树链式结构实现_BiTreeLink.c @@ -71,6 +71,8 @@ void DestroyBiTree(BiTree *T) } } +#define ClearBiTree DestroyBiTree + /* ǰнֵһַ */ /* #ʾʾT */ void CreateBiTree(BiTree *T) @@ -103,7 +105,7 @@ Status BiTreeEmpty(BiTree T) return TRUE; } -#define ClearBiTree DestroyBiTree + /* ʼ: Tڡ: T */ int BiTreeDepth(BiTree T) diff --git a/_04.树/_b.二叉树链式结构.c b/_04.树/_b.二叉树链式结构.c index 071a1bc..f22707f 100644 --- a/_04.树/_b.二叉树链式结构.c +++ b/_04.树/_b.二叉树链式结构.c @@ -2,7 +2,7 @@ * @Author: Xu Bai * @Date: 2019-07-13 22:24:04 * @LastEditors: Xu Bai - * @LastEditTime: 2019-07-18 21:31:33 + * @LastEditTime: 2019-07-19 22:42:49 */ #include "string.h" #include "stdio.h" @@ -82,6 +82,8 @@ void DestroyTree(BiTree *T) } } +#define ClearBiTree DestroyBiTree + void CreateBiTree(BiTree *T) { ElemType ch; @@ -113,4 +115,117 @@ Status BiTreeEmpty(BiTree T) { 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; +} + +/*TڣTĸ */ +ElemType Root(BiTree T) +{ + if (BiTreeEmpty(T)) + { + return Nil; + } + else + { + return T->data; + } +} + +/*pֵָ */ +ElemType Value(BiTree T) +{ + return T->data; +} + +void Assign(BiTree p, ElemType value) +{ + p->data = value; +} + +void PreOrderTraverse(BiTree T) +{ + if (T == NULL) + { + return; + } + printf("%c ", T->data); + PreOrderTraverse(T->lchild); + PreOrderTraverse(T->rchild); +} + +void InOrderTraverse(BiTree T) +{ + if (T == NULL) + { + return; + } + + InOrderTraverse(T->lchild); + printf("%c ", T->data); + InOrderTraverse(T->rchild); +} + +void PostOrderTraverse(BiTree T) +{ + if (T == NULL) + { + return; + } + + PostOrderTraverse(T->lchild); + PostOrderTraverse(T->rchild); + printf("%c ", T->data); +} + +int main() +{ + int i; + BiTree T; + InitBiTree(&T); + ElemType e1; + StrAssign(str, "ABDH#K###E##CFI###G#J##"); + CreateBiTree(&T); + printf("ն,շ%d(1: 0:) =%d\n", BiTreeEmpty(T), BiTreeDepth(T)); + e1 = Root(T); + printf("ĸΪ: %c\n", e1); + + printf("\nǰ:"); + PreOrderTraverse(T); + printf("\n:"); + InOrderTraverse(T); + printf("\n:"); + PostOrderTraverse(T); + ClearBiTree(&T); + printf("\n,շ%d(1: 0:) =%d\n", BiTreeEmpty(T), BiTreeDepth(T)); + i = Root(T); + if (!i) + printf("գ޸\n"); + + getchar(); + return OK; } \ No newline at end of file