Wistain 2021-06-24 17:36 采纳率: 78%
浏览 19
已结题

求解我这个程序怎么eof结束输入

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

时间限制: 1 Sec  内存限制: 128 MB

提交: 3430  解决: 1512

[状态] [提交] [命题人:cyh]

题目描述

编一个程序,读入先序遍历字符串,根据此字符串建立一棵二叉树(以指针方式存储)。

例如如下的先序遍历字符串:

A ST C # # D 10 # G # # F # # #

各结点数据(长度不超过3),用空格分开,其中“#”代表空树。

建立起此二叉树以后,再按要求输出二叉树。

 

输入

输入由多组测试数据组成。

 

每组数据包含一行字符串,即二叉树的先序遍历,字符串长度大于0且不超过100。

 

 

 

输出

对于每组数据,显示对应的二叉树,然后再输出一空行。输出形式相当于常规树形左旋90度。见样例。 注意二叉树的每一层缩进为4,每一行行尾没有空格符号。

 

 

样例输入 Copy

A ST C # # D 10 # G # # F # # #

4 2 1 # # 3 # # 5 # 6 # #

样例输出 Copy

A

            F

        D

                G

            10

    ST

        C

 

        6

    5

4

        3

    2

        1

 

下面是我的代码

#include<bits/stdc++.h>
using namespace std;
 
int depth = -1;
 
typedef struct BiTNode
{
    char data[2];
    struct BiTNode *lchild, *rchild;
}BiTNode, *BiTree;
 
void CreateTree(BiTree &T)
{
    char ch[2];
    cin >> ch;
    if(ch[0] == '#')
    {
        T = NULL;
    }
    else
    {
        T = new BiTNode;
        strcpy(T->data,ch);
        CreateTree(T->lchild);
        CreateTree(T->rchild);
    }
}
 
void PrintTree(BiTree T)
{
    if(T != NULL)
    {
        depth++;
        int daiti = depth;
        PrintTree(T->rchild);
        while(daiti)
        {
            cout << "   ";
            daiti--;
        }
        cout << T->data<<endl;
        PrintTree(T->lchild);
        depth--;
    }
}
 
int main()
{
    BiTree T = new BiTNode;
    while(1)
    {
        CreateTree(T);
        PrintTree(T);
        cout << endl;
    }
    return 0;
}

  • 写回答

1条回答 默认 最新

  • 爱晚乏客游 2021-06-24 17:39
    关注

    可以使用getline把一整行都读取进去处理

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 4月21日
  • 已采纳回答 4月13日

悬赏问题

  • ¥15 ssh登录页面的问题
  • ¥60 渗透一个指定银行app,拿到客户信息,需要什么级别
  • ¥50 关于在matlab上对曲柄摇杆机构上一点的运动学仿真
  • ¥15 jetson nano
  • ¥15 :app:debugCompileClasspath'.
  • ¥15 windows c++内嵌qt出现数据转换问题。
  • ¥20 公众号如何实现点击超链接后自动发送文字
  • ¥15 用php隐藏类名和增加类名
  • ¥15 算法设计与分析课程的提问
  • ¥15 用MATLAB汇总拟合图