您的位置:首页 > 其它

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

2015-11-09 17:11 232 查看
/*

Copyright (c)2015,烟台大学计算机与控制工程学院

All rights reserved.

文件名称:第十周项目2 - 二叉树遍历的递归算法.cpp

作    者:李丛丛

完成日期:2015年11月9日

版 本 号:v1.0

问题描述:  实现二叉树的先序、中序、后序遍历的递归算法,并对用”A(B(D,E(H(J,K(L,M(,N))))),C(F,G(,I)))”创建的二叉树进行测试。

         请利用二叉树算法库。

输入描述: 若干测试数据。

程序输出: 二叉树的输出。

*/

 

 

二叉树的算法库

 

 

实现遍历的函数:

 

 

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);  //访问根节点
}
}
void PreOrder(BTNode *b)        //先序遍历的递归算法
{
if (b!=NULL)
{
printf("%c ",b->data);  //访问根节点
PreOrder(b->lchild);    //递归访问左子树
PreOrder(b->rchild);    //递归访问右子树
}
}


 

主函数:

 

 

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

 

 

 

运行结果为;



 

学习心得:

 

1,使用算法库使编程变得简捷。

2,要真正动手才能知道哪里没掌握,比如递归,看着简单做起来难。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: