第十周【项目二-二叉树遍历的递归算法】

问题描述及代码:

/*    
*烟台大学计控学院     
*作    者:边朔
*完成日期:2016年11月3日 
*问题描述:实现二叉树的先序、中序、后序遍历的递归算法,并对用”A(B(D,E(H(J,K(L,M(,N))))),C(F,G(,I)))”创建的二叉树进行测试。 请利用二叉树算法库。 
*/  



(1)btree.h


#define MaxSize 100  
typedef 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);       //后序遍历的递归算法  


(2)btree.cpp

#define MaxSize 100  
typedef 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);       //后序遍历的递归算法  
  


(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;  
}  


运行结果;




知识点总结:

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

学习心得:

得对着图慢慢来 但是感觉中序遍历有点别扭。






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值