m0_68539462 2022-05-28 20:23 采纳率: 100%
浏览 69
已结题

C++二叉树输入元素无法终止

为什么我写的二叉树代码,会一直要输入元素,无法终止?
救命,有哪位大能能帮我看看到底是哪错了!
下面是我的全部代码:

#include<stdio.h>
#include<stdlib.h>
typedef char ElemType;
void menu()
{
    printf("     二叉树\n");
    printf("1.建立二叉树\n");
    printf("2.先序遍历二叉树\n");
    printf("3.中序遍历二叉树\n");
    printf("4.后序遍历二叉树\n");
    printf("0.退出\n");
}
typedef struct BiTNode
{
    ElemType data;
    struct BiTNode* lchild, * rchild;
}BiTNode, * BiTree;
void InitBiTree(BiTree& T)
{
    T = new BiTNode;
    T->lchild = T->rchild = NULL;
}
bool CreateBiTree(BiTree T)
{
    char c;
    scanf_s("%c", &c);
    if (c == '#')
    {
        T = NULL;
        return true;
    }
    T = new BiTNode;
    T->data = c;
    CreateBiTree(T->lchild);
    CreateBiTree(T->rchild);
    return true;
}
void PreOrder(BiTree T)
{
    if (T == NULL)
        return;
    printf("%c ", T->data);
    PreOrder(T->lchild);
    PreOrder(T->rchild);
}
void InOrder(BiTree T)
{
    if (T == NULL)
        return;
    InOrder(T->lchild);
    printf("%c ", T->data);
    InOrder(T->rchild);
}
void PostOrder(BiTree T)
{
    if (T == NULL)
        return;
    PostOrder(T->lchild);
    PostOrder(T->rchild);
    printf("%c ", T->data);
}
int main()
{
    int choice;
    BiTree T;
    InitBiTree(T);
    menu();
    printf("要进行的操作:\n");
    scanf_s("%d", &choice);
    while (1)
    {
        switch (choice)
        {
        case 1:
            printf("请输入二叉树节点元素(无元素用#代替):\n");
            CreateBiTree(T);
            break;
        case 2:
            PreOrder(T);
            break;
        case 3:
            InOrder(T);
            break;
        case 4:
            PostOrder(T);
            break;
        default:
            printf("你的输入有误,请重新输入:\n");
        }
    }
    return 0;
}

  • 写回答

1条回答 默认 最新

  • xuelanghanbao 2022-05-29 02:27
    关注

    switch里的break只是跳出了switch语句,没有跳出while语句,把

    menu();
    printf("要进行的操作:\n");
    scanf_s("%d", &choice);
    

    这两行代码放进while里就行了

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

报告相同问题?

问题事件

  • 系统已结题 6月6日
  • 已采纳回答 5月29日
  • 创建了问题 5月28日