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

来源:互联网 发布:万科金域名城业主论坛 编辑:程序博客网 时间:2024/06/02 23:08

问题及代码:

实现二叉树的先序中序后序遍历的递归算法,头文件brtee.h与brtee.cpp可见项目一算法库。

(1)brtee.cpp

void PreOrder(BTNode *b){    if(b!=NULL)    {        printf("%c",b->data);        PreOrder(b->rchild);        PreOrder(b->lchild);    }}void InOrder(BTNode *b){    if(b!=NULL)    {        InOrder(b->lchild);        printf("%c",b->data);        InOrder(b->rchild);    }}void PostOrder(BTNode *b){    if(b!=NULL)    {        PostOrder(b->lchild);        PostOrder(b->rchild);        printf("%c",b->data);    }}


(2)main.cpp

#include <stdio.h>#include<malloc.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