回 帖 发 新 帖 刷新版面

主题:帮我看看,刚学二叉树

#include<stdlib.h>
#include<iostream.h>
#include<malloc.h>
#include<string.h>
#include<stdio.h>
enum Status {OVERFLOW,OK};
typedef   int TElemType ;
typedef struct BiTNode{
    TElemType data;
    struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
Status  CreateBiTree_PreOrder(BiTree&T)

{
     char ch;
     cin>>ch;
     if(ch==' ')T=NULL;
     else{
            if(!(T=(BiTNode*)malloc(sizeof(BiTNode))))
            exit(OVERFLOW);
            T->data=ch;
            CreateBiTree_PreOrder(T->lchild);
            CreateBiTree_PreOrder(T->rchild);
    }

    return OK;
}

void main()
{

回复列表 (共2个回复)

沙发

这个是前序构造树吧,采用了递归的思想。

板凳

呵呵!是的,下面是我改正了的算法。
#include<stdlib.h>
#include<iostream.h>
#include<malloc.h>
#include<string.h>
#include<stdio.h>
enum Status {OVERFLOW,OK};
typedef   int TElemType ;
typedef struct BiTNode{
    TElemType data;
    struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;

Status CreateBiTree_PreOrder(BiTree&T)
{
     char ch;
     cin>>ch;
     if(ch==' ')T=NULL;
     BiTNode*temp;
     temp =(BiTNode*)malloc(sizeof(BiTNode));
     if(temp==NULL)
     {
       return OVERFLOW;
     }

     else
     {
            T->data=ch;//[color=FF0000][size=6]但是这里出问题了。以致不能构造二叉树。[/size][/color]            
            
            CreateBiTree_PreOrder(T->lchild);
            CreateBiTree_PreOrder(T->rchild);
    }
    return OK;
}


void main()
{
    BiTree T;
    CreateBiTree_PreOrder(T);    




我来回复

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