注册 登录
编程论坛 数据结构与算法

二叉树的建立和遍历 有错误 没结果 帮帮看看

武定伟 发布于 2010-11-03 23:26, 991 次点击
#include<iostream>
#include<stdlib.h>
using namespace std;
 
#define OK 1
#define ERROR 0
#define OVERFLOW -2

typedef int TElemType ;
typedef int Status;

typedef struct BiTNode{
 TElemType data;
 struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;

Status CreatBiTree(BiTree &T)154
{
 char ch;
 cin>>ch;
 if(ch==' ')T=NULL;
 else{
  if(!(T=(BiTNode*)malloc(sizeof(BiTNode))))exit(OVERFLOW);
  T->data=ch;
  CreatBiTree(T->lchild);
  CreatBiTree(T->rchild);
 }
 return OK;
}
Status PreOrder(BiTree &T)
{
 if(T)
 {
  cout<<T->data;
  PreOrder(T->lchild);
  PreOrder(T->rchild);
 }
 return OK;
}


int main()
{
 BiTree T;
 CreatBiTree(T);
 PreOrder(T);
 return OK;
}

9 回复
#2
寒风中的细雨2010-11-04 07:24
if(ch=='#')
#3
寒风中的细雨2010-11-04 07:35
#include<iostream>
#include<cstdlib>
using namespace std;

#define OK 1
#define ERROR 0
#define OVERFLOW -2

typedef int TElemType ;
typedef int Status;

typedef struct BiTNode
{
    TElemType data;
    struct BiTNode *lchild,*rchild;
}BiTNode, *BiTree;

Status CreatBiTree(BiTree &T)
{
    char ch;
    ch = getchar();
    getchar();
    if(ch == ' ')
    {
        T = NULL;
    }
    else
    {//先序 建立二叉树
        if( !(T=(BiTNode*) malloc (sizeof(BiTNode))) )
            exit(OVERFLOW);
        T->data = int(ch);
        CreatBiTree(T->lchild);
         CreatBiTree(T->rchild);
    }
    return OK;
}

Status PreOrder(BiTree &T)
{
    if(T)
    {
        cout << T->data <<' ';
        PreOrder( T->lchild );
        PreOrder( T->rchild );
    }
    return OK;
}


int main()
{
    BiTree T;
    CreatBiTree(T);
    PreOrder(T);

    return OK;
}
只有本站会员才能查看附件,请 登录


#4
武定伟2010-11-04 16:08
我用你的程序运行了一下 输入(abc  de g  f   )后 结果仍不能运行 而且T->data=int(ch)是为何 好型不用转换成整形吧
#5
寒风中的细雨2010-11-04 21:25
T->data=int(ch)不用加
#6
寒风中的细雨2010-11-04 21:29
只有本站会员才能查看附件,请 登录
#7
武定伟2010-11-05 12:57
我用vc运行,但是他一直让输入,就是没结果啊!
  
只有本站会员才能查看附件,请 登录
咋回事????   
   
#8
寒风中的细雨2010-11-05 14:27
调试下 看看 ch值的变化
#9
w884582010-12-08 10:47
表示 观望 ··!~~有点 复杂
#10
Olin2010-12-23 13:20
1.typedef int TElemType ;
 改为 typedef char TElemType ;
2.if(ch=='#')
先序输入ac##b## 有结果先序遍历结果:acb




1