二叉树前序、中序、后序遍历

根据网络代码优化,可以运行:(有空再追加注释)

#include<stdio.h>

#include<stdlib.h>


typedef char TypeData;
typedef struct stBiTreeNode
{
TypeData data;
struct stBiTreeNode *lchild;
struct stBiTreeNode *rchild;
}BITREENODE;


BITREENODE* createBiTree()
{
char chTempData = 0;
BITREENODE *pstNewNode = NULL;
scanf("%c", &chTempData);
if(chTempData == '#')
{
pstNewNode = NULL;
}
else
{
pstNewNode = (BITREENODE*)malloc(sizeof(BITREENODE)+1);
pstNewNode->data = chTempData;


pstNewNode->lchild = createBiTree();
pstNewNode->rchild = createBiTree();
}
return pstNewNode;
}


int preVisitBiTree(BITREENODE* InRoot)
{
if(InRoot)
{
printf("%c ", InRoot->data);
preVisitBiTree(InRoot->lchild);
preVisitBiTree(InRoot->rchild);
}
return 0;
}


int inVisitBiTree(BITREENODE* InRoot)
{
if(InRoot)
{
inVisitBiTree(InRoot->lchild);
printf("%c ", InRoot->data);
inVisitBiTree(InRoot->rchild);
}
return 0;
}


int postVisitBiTree(BITREENODE* InRoot)
{
if(InRoot)
{
postVisitBiTree(InRoot->lchild);
postVisitBiTree(InRoot->rchild);
printf("%c ", InRoot->data);
}
return 0;
}


int main()
{
BITREENODE* pstRoot;


pstRoot = createBiTree();


preVisitBiTree(pstRoot);
printf("\n");


inVisitBiTree(pstRoot);
printf("\n");


postVisitBiTree(pstRoot);


return 0;
}


输入:ABH##FD###E#CK##G##

输出:A B H F D E C K G 
   H B D F A E K C G 
   H D F B K G C E A

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值