二叉树遍历的递归算法
递归问题总会成为我们的难点,代码量少,思维量确是很大,难是在所难免的,所以,在思维理解的同时结合实现代码理解,这样就很有可能让我们打开思路,理解的更深,本次实践将在二叉树算法的基础上进行遍历二叉树递归运算实现,旨在结合实现代码,能够更好的理解,同时可以实际应用。(编译环境:VC++6.0)
注:在main函数中,创建的用于测试的二叉树如下——

实现源代码如下:
-
-
-
-
-
-
-
-
-
- #include <stdio.h>
- #include "btree.h"
- void PreOrder(BTNode *b)
- {
- if (b!=NULL)
- {
- printf("%c ",b->data);
- PreOrder(b->lchild);
- PreOrder(b->rchild);
- }
- }
-
- 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);
- }
- }
-
- 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;
- }
测试结果截图如下: