二叉树的链式存储实现
上篇记录了下二叉树顺序存储的实现 这篇记录下链式存储的
- 如下图是一个普通的二叉树 将它稍作处理 为了后续方便存储 (带#表示当前结点是空的)

typedef struct BiTNode{
char data;
struct BiTNode * lchild;
struct BiTNode * rchild;
}BiTNode,*BiTree;
void CreateBiTree(BiTree *T){
char ch = str[indexs++]
if (ch == '#') {
*T = NULL
} else {
*T = (BiTree)malloc(sizeof(BiTNode))
(*T)->data = ch
/*
创建左右子树
*/
CreateBiTree(&(*T)->lchild)
CreateBiTree(&(*T)->rchild)
}
}
\
void CreateBiTree(BiTree *T){
char ch = str[indexs++]
if (ch == '#') {
*T = NULL
} **else** {
*T = (BiTree)malloc(sizeof(BiTNode))
(*T)->data = ch
/*
创建左右子树
*/
CreateBiTree(&(*T)->lchild)
CreateBiTree(&(*T)->rchild)
}
}
void PreOrderTraverse(BiTree T){
if (T==NULL) {
return;
}
printf("%c ",T->data);
PreOrderTraverse(T->lchild);
PreOrderTraverse(T->rchild);
}
void InOrderTraverse(BiTree T){
if (T==NULL) {
return;;
}
InOrderTraverse(T->lchild);
printf("%c ",T->data);
InOrderTraverse(T->rchild);
}
void PostOrderTraverse(BiTree T){
if (T==NULL) {
return;
}
InOrderTraverse(T->lchild);
InOrderTraverse(T->rchild);
printf("%c ",T->data);
}