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

二叉树的建立与递归遍历C语言版

2016-06-22 19:36 288 查看
</pre><pre name="code" class="cpp">#include <stdio.h>
#include <malloc.h>

typedef struct BTNode
{
char data;
struct BTNode *lchild;
struct BTNode *rchild;
}BTNode;

void createTree(BTNode* *T)
{
char ch = getchar();
if(ch=='#')
{
*T=NULL;
return;
}
(*T) = (BTNode*)malloc(sizeof(BTNode));
(*T)->data = ch;
createTree(&(*T)->lchild);
createTree(&(*T)->rchild);
}

void preOrder(BTNode *T)//先序遍历
{
if(T==NULL) return;
printf("%c\t", T->data);
if(T->lchild!=NULL)
preOrder(T->lchild);
if(T->rchild != NULL)
preOrder(T->rchild);
}

void inOrder(BTNode *T)//中序遍历
{
if(T==NULL) return;

if(T->lchild!=NULL)
inOrder(T->lchild);
printf("%c\t", T->data);
if(T->rchild != NULL)
inOrder(T->rchild);
}

void postOrder(BTNode *T)//后序遍历
{
if(T==NULL) return;

if(T->lchild!=NULL)
postOrder(T->lchild);
if(T->rchild != NULL)
postOrder(T->rchild);
printf("%c\t", T->data);
}

int main(int argc, char const *argv[])
{
BTNode *T;
createTree(&T);
puts("PreOrder visit:");
preOrder(T);
putchar('\n');

puts("inOrder visit:");
inOrder(T);
putchar('\n');

puts("PostOrder visit:");
postOrder(T);
putchar('\n');
return 0;
}
/*运行结果:

ABD###C##
PreOrder visit:
A       B       D       C
inOrder visit:
D       B       A       C
PostOrder visit:
D       B       C       A
请按任意键继续. . .*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: