回 帖 发 新 帖 刷新版面

主题:请高手帮忙看看本程序 二叉树的基本操作

请高手帮忙看看本程序:
#include"malloc.h"
#include"string.h"
typedef struct bnd{
    char data;
    struct bnd *l,*r;
}bnd,*bt;
creatt(bt *t,char *ch,int i)
{
    if(ch[i]=='$'||i>strlen(ch))
    {
        *t=NULL;
        return 1;
    }
    *t=(bnd *)malloc(sizeof(bnd));
    if(*t==NULL) return 0;
    creatt(&((**t).l),ch,i*2);
    (**t).data=ch[i];
    creatt(&((**t).r),ch,i*2+1);
}
int vis(bt t)
{
    printf("%c",(*t).data);
    return 1;
}
ldr(bt t)
{
    if(t){
        if(vis(t))
            if(ldr((*t).l))
                if(ldr((*t).r))
                    return 1;
        return 0;
    }else return 1;
}

main()
{
    bt t,*p;
    char *c="a";
    creatt(&t,c,1);
    ldr(t);
}
为什么运行后不出结果啊......

回复列表 (共2个回复)

沙发

高手快来啊...

板凳

你这个程序会不会太烦琐了啊。建立二叉树最用前序建立。不要用后序。
我没看完。但是我觉得你说输不出来。你可能就是创建的时候。没有真正的找到根结点。
我这里有个程序是可以运行的。你仔细理解一下。应该你自己写没什么问题了。

#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
#include <string.h>

typedef struct BinTreeT
{
    char data;
    struct BinTreeT *Lchild;
    struct BinTreeT *Rchild;
};
/*
  Create the tree
  */
void CreateTree(struct BinTreeT *T)
{
    char c;
    
    scanf("%c",&c);
    if(c==' ')
            T=NULL;
    else
        {
            T=(struct BinTreeT *)malloc(sizeof(struct BinTreeT));
            if(T==NULL)
            {
                printf("There isn't any memory!");
                exit(1);
            }
            T->data=c;
            CreateTree(T->Lchild);
            CreateTree(T->Rchild);
        }
}
int Show(char e)
{
    if(e)
    {
      printf("%c",e);
      return 1;
    }
    else
        return 0;
}

int PreTraverse(struct BinTreeT *T)
{
    if(T)
    {
        if(Show(T->data))
            if(PreTraverse(T->Lchild))
                if(PreTraverse(T->Rchild))
                      return 1;
    }
    else
    {
       printf("there isn't element!");
       return 0;
     }
      
    
}
void main()
{
    struct BinTreeT A;
    printf("Enter the chararte: \n");
    printf("When you enter the block to stop!\n");
    CreateTree(&A);
    PreTraverse(&A);
    getch();
}

你还可以看我的博客里面《 二叉树的前序递归建立的详解》有我写的关于二叉树的建立问题。

我来回复

您尚未登录,请登录后再回复。点此登录或注册