用递归方法先创建树根结点,然后分别创建左、右子树。在创建二叉树时,其结点数据的输入预先不确定,有键盘输入二叉树结点个数,然后再输入一个相应长度的字符串,将这个字符串临保存在字符串str中,最后再从字符串中去除数据,并分配给需要创建的二叉树结点。
#include<stdio.h>;
#include<string.h>
# define MAX 100
# define NULL 0
char *p;
typedef struct BiTNods{
char data;
struct BiTNods *lchild,*rchild;
}BiTNods,*BiTree;
void CreateTree(BiTree BTree)
{
(*BTree).data=*p;
if(*(p++)!=' '){
(*BTree).lchild=(BiTNods*)malloc(sizeof(BiTNods));
CreateTree((*BTree).lchild);
}
else
(*BTree).lchild=NULL;
if(*(p++)!=' '){
(*BTree).rchild=(BiTNods*)malloc(sizeof(BiTNods));
CreateTree((*BTree).rchild);
}
else
(*BTree).rchild=NULL;
}
void Preorder(BiTree T){
if(T){
printf("%d\t",(*T).data);
Preorder((*T).lchild);
Preorder((*T).rchild);
}
}
void main(){
char bt[MAX];
p=bt;
BiTree BTree;
printf("please input string:\n");
gets(bt);
if(bt==' '){
pirntf("NO element in the tree!");
}
else{
BTree=(BiTNods*)malloc(sizeof(BiTNods));
CreateTree(BTree);
}
Preorder(BTree);
getch();
}
我的算法思想是通过指针遍历字符串str,将非空格的元素由先序遍历方法存储进二叉树里面.请帮帮我