问题 N: 二叉树的创建和文本显示

在这里插入图片描述
在这里插入图片描述

怎么讲呢?
这个代码是用时间和睡眠写出来的 但是我原先的代码还是有错误,为了赶时间,就参考了一下别人的方法,和基本的先序建树模型
通过做这个 得到一个结论 像这种题 一样要尽力的靠算法模型,自己写的算法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;
}
发布了8 篇原创文章 · 获赞 10 · 访问量 1944

猜你喜欢

转载自blog.csdn.net/weixin_43573750/article/details/93728765