您的位置:首页 > 编程语言 > C语言/C++

二叉树的三种遍历(C语言写的)

2017-01-10 00:00 197 查看
// 链式二叉树.cpp : 定义控制台应用程序的入口点。
//

/*对这个二叉树进行遍历
A
/ \
B   C
\   \
D   E
*/

#include "stdafx.h"
#include<stdlib.h>

typedef char eleType;
typedef struct Node
{
struct Node *RChild;
struct Node *LChild;
eleType data;
}BiNode,*BiTree;

BiTree CreateTree(void)
{
BiTree A,B,C,D,E;
A = (BiNode *)malloc(sizeof(BiNode));
B = (BiNode *)malloc(sizeof(BiNode));
C = (BiNode *)malloc(sizeof(BiNode));
D = (BiNode *)malloc(sizeof(BiNode));
E = (BiNode *)malloc(sizeof(BiNode));
A->data = 'A';
B->data = 'B';
C->data = 'C';
D->data = 'D';
E->data = 'E';

A->LChild = B;
A->RChild = C;
B->LChild = NULL;
B->RChild = D;
C->LChild = NULL;
C->RChild = E;
D->LChild = D->RChild = NULL;
E->LChild = E->RChild = NULL;
return A;
}
void Visit(eleType data)
{
printf("%c	",data);
}
//先序遍历
void PreOrder(BiTree root)
{
if(root != NULL)
{
Visit(root->data);//访问根节点
PreOrder(root->LChild);
PreOrder(root->RChild);
}
}
//中序遍历
void InOrder(BiTree root)
{
if(root != NULL)
{
InOrder(root->LChild);
Visit(root->data);
InOrder(root->RChild);
}
}
//后序遍历
void PostOrder(BiTree root)
{
if(root != NULL)
{
PostOrder(root->LChild);
PostOrder(root->RChild);
Visit(root->data);
}
}

int _tmain(int argc, _TCHAR* argv[])
{
BiTree T;
T = CreateTree();
printf("先序遍历:\n");
PreOrder(T);
printf("\n");
printf("中序遍历:\n");
InOrder(T);
printf("\n");
printf("后序遍历:\n");
PostOrder(T);
printf("\n");
return 0;
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: