昨天把fuffman树的问题解决了,今天把二叉树最基本的操作给实现。
/*
************************************************
*Name : Bittree all operation
*Date : 2014-12-18
*Author : marksman
*Aim : Create a bittree and visit it.
************************************************
*/
#include <stdio.h>
#include <stdlib.h>
/*
*Tree structure
*/
typedef struct
{
char date;
struct tree *lchild,*rchild;
}tree,*Bit_tree;
/*
*Create the bittree
*/
Bit_tree Create_bit_tree(Bit_tree bittree)
{
char ch;
scanf("%c",&ch);
getchar();
if(ch=='$')
bittree = NULL;
else
{
bittree = (tree *)malloc(sizeof(tree));
bittree->date = ch;
bittree->lchild = Create_bit_tree(bittree->lchild);
bittree->rchild = Create_bit_tree(bittree->rchild);
}
return bittree;
}
/*
*preorder the bittree
*/
int preorder_bit_tree(Bit_tree bittree)
{
if(bittree)
{
printf("%c ",bittree->date);
preorder_bit_tree(bittree->lchild);
preorder_bit_tree(bittree->rchild);
}
return 0;
}
/*
*inorder the bittree
*/
int inorder_bit_tree(Bit_tree bittree)
{
if(bittree!=NULL)
{
inorder_bit_tree(bittree->lchild);
printf("%c ",bittree->date);
inorder_bit_tree(bittree->rchild);
}
return 0;
}
/*
*beorder the bittree
*/
int beorder_bit_tree(Bit_tree bittree)
{
if(bittree!=NULL)
{
beorder_bit_tree(bittree->lchild);
beorder_bit_tree(bittree->rchild);
printf("%c ",bittree->date);
}
return 0;
}
int main()
{
Bit_tree bittree;
bittree = (tree *)malloc(sizeof(tree));
bittree = Create_bit_tree(bittree);
preorder_bit_tree(bittree);
printf("\n");
inorder_bit_tree(bittree);
printf("\n");
beorder_bit_tree(bittree);
printf("\n");
return 0;
}
提供一组测试用例:
A
B
C
$
$
D
E
$
G
$
$
F
$
$
$