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

C语言实现二叉树的遍历

2012-09-27 13:23 411 查看
#include <stdio.h>
#include <stdlib.h>

typedef  char   TElemType ;

typedef struct TNode
{
TElemType data;
struct TNode *lchild , *rchild;
}BiTNode , *BiTree;

int creatTree(BiTree *root) //递归创建二叉树
{
char ch;
scanf("%c" , &ch);
if(ch == '#')
{
(*root) = NULL;
}
else
{
if(!((*root) = (BiTNode *)malloc(sizeof(BiTNode))))
{
printf("malloc error!\n");
return -1;
}
(*root)->data = ch;
creatTree(&((*root)->lchild));
creatTree(&((*root)->rchild));
}

return 0;
}
void preOrderTraverse(BiTree tree)  //递归前序遍历
{

if(tree)
{
printf("%c", tree->data);
preOrderTraverse(tree->lchild);
preOrderTraverse(tree->rchild);

}

return ;
}
void inOrderTraverse(BiTree tree)   //递归中序遍历
{
if(tree)
{
inOrderTraverse(tree->lchild);
printf("%c", tree->data);
inOrderTraverse(tree->rchild);
}
return ;
}

void lastOrderTraverse(BiTree tree) //递归后序遍历
{
if(tree)
{
lastOrderTraverse(tree->lchild);
lastOrderTraverse(tree->rchild);
printf("%c", tree->data);
}
return ;
}
int main(int argc , char **argv)
{
BiTree tree ;
creatTree(&tree);
printf("\n*********先序遍历*********\n");
preOrderTraverse(tree);
printf("\n*********中序遍历*********\n");
inOrderTraverse(tree);
printf("\n*********后序遍历*********\n");
lastOrderTraverse(tree);
printf("\n");

return 0;
}


本文出自 “Record” 博客,请务必保留此出处http://mjrao.blog.51cto.com/6086668/1008061
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: