#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100;
/*二叉树的数据结构定义*/
typedef struct BiTreeNode
{
char data;
struct BiTreeNode *left;
struct BiTreeNode *right;
}BiTreeNode,*BiTree;
/*二叉树的建立--按照先序方式建立--录入数据--插入*/
void CreateBiTree(BiTree *T)
{
char val;
scanf("%c",&val);
if(val == '#')
*T = NULL; //NULL即表示为空二叉树
else
{
*T = (BiTree)malloc(sizeof(BiTreeNode));/* 申请一个结点存入数据 */
(*T)->data = val;
CreateBiTree(&(*T)->left);
CreateBiTree(&(*T)->right);
}
}
/*二叉树的 先序遍历 根左右*/
void PreOrderTravel(BiTree T)
{
if(T == NULL)
return ;
printf("%c ", T->data);
PreOrderTravel(T->left);
PreOrderTravel(T->right);
}
/*二叉树的 中序遍历 左根右*/
void InOrderTravel(BiTree T)
{
if(T == NULL)
return ;
PreOrderTravel(T->left);
printf("%c ", T->data);
PreOrderTravel(T->right);
}
/*二叉树的 后序遍历 左右根*/
void TailOrderTravel(BiTree T)
{
if(T == NULL)
return ;
PreOrderTravel(T->left);
PreOrderTravel(T->right);
printf("%c ", T->data);
}
int main()
{
BiTree T;
T=(BiTree)malloc(sizeof(BiTreeNode));
printf("请给二叉树按照先序遍历的输入顺序输入结点(空结点用符号'#'表示):\n");
CreateBiTree(&T);
printf("先序遍历的输出结果:\n");
PreOrderTravel(T);
printf("\n");
printf("中序遍历的输出结果:\n");
InOrderTravel(T);
printf("\n");
printf("后序遍历的输出结果:\n");
TailOrderTravel(T);
printf("\n");
return 0;
}
DataStructure----二叉树递归算法
最新推荐文章于 2023-01-31 19:54:34 发布