/**
* 利用 带空格的BT的preorder序列 建立 BT,
* 按后序遍历次序(递归)打印出各个结点
*/
#include <stdio.h>
#include <stdlib.h>
#define OVERFLOW -2
typedef struct BTNode
{
char data;
struct BTNode *lchild, *rchild;
} BTNode;
/* 递归先序建立二叉树 */
void
Create_BT(BTNode* & T)
{
char ch;
scanf("%c", &ch);
if (ch == ' ')
T = NULL;
else
{
T = (BTNode *)malloc(sizeof(BTNode));
if (!T)
exit(OVERFLOW);
T->data = ch; // 生成根结点
Create_BT(T->lchild);
Create_BT(T->rchild);
}
}
void
visit_BT(BTNode *T) // 输出后序遍历的结果
{
if (T)
{
visit_BT(T->lchild);
visit_BT(T->rchild);
printf("%c ", T->data);
}
}
int
main()
{
BTNode *T;
printf("请将二叉树中的结点按从上到下从到右的次序输入(如:ab三个空格表示a为根结点,b为左子树的二叉树):\n");
Create_BT(T);
printf("\n递归实现的二叉树中序遍历结果为:\n");
visit_BT(T);
printf("\n");
return 0;
}
二叉树后序遍历(递归算法)
最新推荐文章于 2024-08-31 16:54:26 发布