您的位置:首页 > 其它

递归实现二叉树的三种遍历

2016-12-10 10:26 281 查看
#include <stdio.h>
#include <stdlib.h>
typedef char ElementType;
typedef struct TreeNode{
ElementType Data;
struct TreeNode *lchild;
struct TreeNode *rchild;
}*BinTree;
//建立
void creatBinTree(BinTree *T)
{
char ch;
scanf("%c",&ch);
if(ch == '0') (*T) = NULL;
else
{
if(!((*T) = (TreeNode *)malloc(sizeof(TreeNode)))) return;
(*T)->Data = ch;
creatBinTree(&(*T)->lchild);
creatBinTree(&(*T)->rchild);
}
}
//递归
//中序遍历
void inOrderTraversal(BinTree T)
{
if(T)
{
inOrderTraversal(T->lchild);
printf("%c",T->Data);
inOrderTraversal(T->rchild);
}
}
//先序遍历
void preOrderTraversal(BinTree T)
{
if(T)
{
printf("%c",T->Data);
preOrderTraversal(T->lchild);
preOrderTraversal(T->rchild);
}
}
//后序遍历
void postOrderTraversal(BinTree T)
{
if(T)
{
postOrderTraversal(T->lchild);
postOrderTraversal(T->rchild);
printf("%c",T->Data);
}
}
int main()
{
BinTree T;
creatBinTree(&T);
printf("inOrderTraversal is:\n");
inOrderTraversal(T);
printf("\n");
printf("preOrderTraversal is:\n");
preOrderTraversal(T);
printf("\n");
printf("postOrderTraversal is:\n");
postOrderTraversal(T);
printf("\n");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  二叉树 递归 遍历