第十周项目一二叉树算法库

来源:互联网 发布:开源推荐系统 python 编辑:程序博客网 时间:2024/06/08 13:36
/*Copyright (c) 2015,烟台大学计算机学院    *All right reserved    *文件名称:main.cpp    *作者:姜延锴    *完成日期:2016年11月10 *版本号:v1.0    *    *问题描述:定义二叉树的链式存储结构,实现其基本运算,并完成测试。*/        main函数
<pre name="code" class="cpp">#include <stdio.h>#include "btree.h"int main(){    BTNode *b,*p,*lp,*rp;;    printf("  (1)创建二叉树:");    CreateBTNode(b,"A(B(D,E(H(J,K(L,M(,N))))),C(F,G(,I)))");    printf("\n");    printf("  (2)输出二叉树:");    DispBTNode(b);    printf("\n");    printf("  (3)查找H节点:");    p=FindNode(b,'H');    if (p!=NULL)    {        lp=LchildNode(p);        if (lp!=NULL)            printf("左孩子为%c ",lp->data);        else            printf("无左孩子 ");        rp=RchildNode(p);        if (rp!=NULL)            printf("右孩子为%c",rp->data);        else            printf("无右孩子 ");    }    else        printf(" 未找到!");    printf("\n");    printf("  (4)二叉树b的深度:%d\n",BTNodeDepth(b));    printf("  (5)释放二叉树b\n");    DestroyBTNode(b);    return 0;}

头文件btree.h
<pre name="code" class="cpp">#ifndef BTREE_H_INCLUDED#define BTREE_H_INCLUDED#define MaxSize 100typedef char ElemType;typedef struct node{    ElemType data;              //数据元素    struct node *lchild;        //指向左孩子    struct node *rchild;        //指向右孩子} BTNode;void CreateBTNode(BTNode *&b,char *str);        //由str串创建二叉链BTNode *FindNode(BTNode *b,ElemType x);     //返回data域为x的节点指针BTNode *LchildNode(BTNode *p);  //返回*p节点的左孩子节点指针BTNode *RchildNode(BTNode *p);  //返回*p节点的右孩子节点指针int BTNodeDepth(BTNode *b); //求二叉树b的深度void DispBTNode(BTNode *b); //以括号表示法输出二叉树void DestroyBTNode(BTNode *&b);  //销毁二叉树#endif // BTREE_H_INCLUDED
源文件btree.cpp
<pre name="code" class="cpp">/*Copyright (c) 2015,烟台大学计算机学院    *All right reserved    *文件名称:main.cpp    *作者:姜延锴    *完成日期:2016年11月10 *版本号:v1.0    *    *问题描述:定义二叉树的链式存储结构,实现其基本运算,并完成测试。*/             #include <stdio.h>#include "btree.h"int main(){    BTNode *b,*p,*lp,*rp;;    printf("  (1)创建二叉树:");    CreateBTNode(b,"A(B(D,E(H(J,K(L,M(,N))))),C(F,G(,I)))");    printf("\n");    printf("  (2)输出二叉树:");    DispBTNode(b);    printf("\n");    printf("  (3)查找H节点:");    p=FindNode(b,'H');    if (p!=NULL)    {        lp=LchildNode(p);        if (lp!=NULL)            printf("左孩子为%c ",lp->data);        else            printf("无左孩子 ");        rp=RchildNode(p);        if (rp!=NULL)            printf("右孩子为%c",rp->data);        else            printf("无右孩子 ");    }    else        printf(" 未找到!");    printf("\n");    printf("  (4)二叉树b的深度:%d\n",BTNodeDepth(b));    printf("  (5)释放二叉树b\n");    DestroyBTNode(b);    return 0;}




0 0
原创粉丝点击