您的位置:首页 > 其它

二叉树的创建与递归遍历

2013-11-11 16:31 288 查看
二叉树的创建与递归遍历

#include<stdio.h>
#include<stdlib.h>

typedef struct Node
{
char data;
struct Node *lch;
struct Node *rch;
}BiNode, *BiTree;

void Creat1(BiTree *T);             //二叉树的创建,第一种方法
BiTree Creat2()                     //二叉树的创建,第二种方法
void Preorder(BiTree T);            //先序遍历
void Inorder(BiTree T);             //中序遍历
void Postorder(BiTree T);           //后续遍历

int main(void)
{
BiTree T;
Creat1(&T);                     //二叉树的创建,第一种方法
//	T = Creat2();                   //二叉树的创建,第二种方法
Preorder(T);                    //先序遍历
printf("\n");
Inorder(T);                     //中序遍历
printf("\n");
Postorder(T);                   //后续遍历
return 0;
}

void Creat1(BiTree *T)              //二叉树的创建,第一种方法
{
char c;

printf("请输入数据:");
c = getchar();
flushall();

if(c != '$')
{
(*T) = (BiNode *)malloc(sizeof(BiNode));
(*T)->data = c;
Creat(&((*T)->lch));
Creat(&((*T)->rch));
}
else
{
(*T) = NULL;

}
}

BiTree Creat2()                     //二叉树的创建,第二种方法
{
BiTree T;
char c;

printf("请输入数据:");
c = getchar();
flushall();

if(c != '$')
{
T = (BiNode *)malloc(sizeof(BiNode));
T->data = c;

T->lch = Creat();
T->rch = Creat();
}
else
T = NULL;
return T;
}

void Preorder(BiTree T)              //先序遍历
{
if(T)
{
printf("%c",T->data);

Preorder(T->lch);
Preorder(T->rch);
}
}

void Inorder(BiTree T)               //中序遍历
{
if(T)
{
Inorder(T->lch);

printf("%c",T->data);

Inorder(T->rch);
}
}

void Postorder(BiTree T)              //后续遍历
{
if(T)
{
Postorder(T->lch);
Postorder(T->rch);

printf("%c",T->data);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: