您的位置:首页 > 其它

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

2015-11-06 08:48 357 查看
问题及代码:

/*
Copyright (c)2015,烟台大学计算机与控制工程学院
All rights reserved.
文件名称:第十周项目2 - 二叉树遍历的递归算法.cpp
作    者:孙翰文
完成日期:2015年11月6日
版 本 号:v1.0

问题描述:  实现二叉树的先序、中序、后序遍历的递归算法,并对用”A(B(D,E(H(J,K(L,M(,N))))),C(F,G(,I)))”创建的二叉树进行测试。
        请利用二叉树算法库。
输入描述: 若干测试数据。
程序输出: 二叉树的输出。
*/


二叉树算法库

main函数:

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


实现函数:

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);    //递归访问右子树
}
}


运行结果:



知识点总结:

二叉树的遍历。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: