第十周项目2二叉树遍历的递归算法

来源:互联网 发布:步进电机应用场合 知乎 编辑:程序博客网 时间:2024/06/16 09:30

问题及代码:

#ifndef BTREE_H_INCLUDED#define BTREE_H_INCLUDED/*   *烟台大学计控学院    *作    者:孙启先  *完成日期:2016年11月3日*问题描述:实现二叉树的先序、中序、后序遍历的递归算法,并对用”A(B(D,E(H(J,K(L,M(,N))))),C(F,G(,I)))”创建的二叉树进行测试。 请利用二叉树算法库。*/#endif // BTREE_H_INCLUDED(1)btree.h#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);  //销毁二叉树void PreOrder(BTNode *b);       //先序遍历的递归算法void InOrder(BTNode *b);        //中序遍历的递归算法void PostOrder(BTNode *b);       //后序遍历的递归算法#endif // BTREE_H_INCLUDED(2)btree.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);  //销毁二叉树void PreOrder(BTNode *b);       //先序遍历的递归算法void InOrder(BTNode *b);        //中序遍历的递归算法void PostOrder(BTNode *b);       //后序遍历的递归算法#endif // BTREE_H_INCLUDED(3)main.cpp#include <stdio.h>#include"btree.h"int main(){    BTNode *b;    CreateBTNode(b,"A(B(D,E(H(J,K(L,M(,N))))),C(F,G(,I)))");    printf("二叉树b:");    DispBTNode(b);    printf("\n");    printf("先序遍历序列:\n");    PreOrder(b);    printf("\n");    printf("中序遍历序列:\n");    InOrder(b);    printf("\n");    printf("后序遍历序列:\n");    PostOrder(b);    printf("\n");    DestroyBTNode(b);    return 0;}


 

运行结果:

学习心得:

二叉树的基本运算及先序、中序、后序遍历

0 0
原创粉丝点击