先序创建二叉树的问题

Barcelooooooooona 2017-11-24 05:42:49
#include<iostream>
#include<malloc.h>
using namespace std;

typedef struct node
{
char data;
struct node *lchild;
struct node *rchild;
}BTnode;

BTnode* CreateBiTree(BTnode *&T)
{
char ch;
cin >> ch;
if (ch == ' ')
return NULL;
else
{
T = (BTnode*)malloc(sizeof(BTnode));
T->data = ch;
T->lchild=CreateBiTree(T->lchild);
T->rchild=CreateBiTree(T->rchild);
return T;
}
}

void PreOrder(BTnode *b)
{
if (b != NULL)
{
cout << b->data;
PreOrder(b->lchild);
PreOrder(b->rchild);
}
}
int main()
{
BTnode *B = (BTnode*)malloc(sizeof(BTnode));
B=CreateBiTree(B);
PreOrder(B);
return 0;
}

为什么没有输出的啊?求大神指导,谢谢了
...全文
167 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Barcelooooooooona 2017-11-24
  • 打赏
  • 举报
回复
嗯,谢谢大神
自信男孩 2017-11-24
  • 打赏
  • 举报
回复
#include<iostream>
#include<malloc.h>
using namespace std;

typedef struct node
{
    char data;
    struct node *lchild;
    struct node *rchild;
}BTnode;

BTnode* CreateBiTree(BTnode *&T)
{
    char ch;
    cin >>ch;
    if (ch == '#')    /*空格改成#*/
        return  NULL;
    else
    {
        T = (BTnode*)malloc(sizeof(BTnode));
        T->data = ch;
        T->lchild=CreateBiTree(T->lchild);
        T->rchild=CreateBiTree(T->rchild);
        return T;
    }
}

void PreOrder(BTnode *b)
{
    if (b != NULL)
    {
        cout << b->data;
        PreOrder(b->lchild);
        PreOrder(b->rchild);
    }
}
int main()
{
    BTnode *B = (BTnode*)malloc(sizeof(BTnode));
    B=CreateBiTree(B);
    PreOrder(B);
    return 0;
}
空格改成#,然后输入如下:
ABC##DE#G##F###
为什么不可以,主要是cin输入的问题,即cin不会将空格赋值给ch;

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧