在做算法题的时候,经常需要创建二叉树做测试,包括字符型,整型,查找二叉树,方法也很多。但是由于从键盘读取数据时,总是读取回车字符,导致出错。所以把这几种方法总结一下放到这里:
二叉树结点的定义:
struct bintree
{
char value;
bintree *left,*right;
}
字符型:
bintree* CreateBiTree(){
char ch;
bintree *T;
scanf("%c",&ch);
fflush(stdin);
if(ch=='#')T=NULL;
else{
T = (bintree*)malloc(sizeof(bintree));
T->value = ch;
printf("\n请输入%c结点的左子结点:",T->value);
T->left = CreateBiTree();
printf("\n请输入%c结点的右子结点:",T->value);
T->right = CreateBiTree();
}
return T;//返回根节点
}
整型:
bintree *CreatBT() //建立(整型)二叉树
{
bintree *t;
int x;
scanf("%d",&x);
//getchar();
if(x==0)
{
t=NULL;
}
else
{
t=(bintree*)malloc(sizeof(bintree));
t->value=x;
printf("\n请输入%d结点的左子结点:",t->value);
t->left=CreatBT();
printf("\n请输入%d结点的右子结点:",t->value);
t->right=CreatBT();
}
return t;
}
以上代码均在vs2010环境测试无误。至于其他几种方法会在后续补充。