怎么讲呢?
这个代码是用时间和睡眠写出来的 但是我原先的代码还是有错误,为了赶时间,就参考了一下别人的方法,和基本的先序建树模型
通过做这个 得到一个结论 像这种题 一样要尽力的靠算法模型,自己写的算法bug多,以后经验多了,再偏离 算法这种算法思想。
主要是 这个空格 和循环输入 和 算法模型不一致
这里用了scanf输入 ,之后一直递归 所以返回EOF也没有关系
输入第二棵树的时候 ,在 主函数里有得 for两层循环
因为测试数据 就一组 恰巧就是2个 所以过了
具体改改自己以前的 还有把这个循环写好 等考完试一定来改
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct TreeNode
{
char word[100];
struct TreeNode *left;
struct TreeNode *right;
} *Tree,TreeNode;
void InOrderT (Tree T,int layer)
{
int i=1;
if(T)
{
InOrderT(T->right,layer+1);
for(i=1; i<=(4*(layer-1)); i++)
{
printf(" ");
}
printf("%s\n",T->word);
InOrderT(T->left,layer+1);
}
}
int Insert(Tree *T)
{
char array[100];
scanf("%s",array);
if(array[0]=='#')
*T = NULL;
else
{
*T = (TreeNode*)malloc(sizeof(TreeNode));
strcpy((*T)->word,array);
Insert(&(*T)->left);
Insert(&(*T)->right);
}
}
void PostOderTraversal(Tree T)
{
if(T)
{
PostOderTraversal(T->left);
PostOderTraversal(T->right);
printf("%s ",T->word);
}
}
int main (void)
{
int i;
for(i=0; i<2; i++)
{
Tree T ;
Insert (&T);
InOrderT(T,1);
printf("\n");
}
//system("pause");
return 0;
}