再努力一点点.. 2022-09-09 15:33 采纳率: 88.9%
浏览 8
已结题

二叉搜索树通过插入建立不知道为什么失败?

问题遇到的现象和发生背景

二叉搜索树插入出现问题,只能插入第一个元素

问题相关代码
#include <stdio.h>
#include <stdlib.h>

typedef int ElementType;
typedef struct TNode *Position;
typedef Position BinTree;
struct TNode{
    ElementType Data;
    BinTree Left;
    BinTree Right;
};

void PreorderTraversal( BinTree BT ); 
BinTree Insert( BinTree BST, ElementType X );

int main()
{
    BinTree BST;
    ElementType X;
    int N, i;

    BST = NULL;
    scanf("%d", &N);
    for ( i=0; i<N; i++ ) {
        scanf("%d", &X);
        BST = Insert(BST, X);
    }
    printf("Preorder:"); PreorderTraversal(BST); printf("\n");
    return 0;
}
/* 你的代码将被嵌在这里 */
void PreorderTraversal( BinTree BT )
{
    if(!BT) return;
    printf("%d ",BT->Data);
    PreorderTraversal(BT->Left);
    PreorderTraversal(BT->Right);
}
BinTree Insert( BinTree BST, ElementType X )
{
    if(!BST) 
    {
        BinTree t=(TNode*)malloc(sizeof(TNode));
        t->Data =X;
        t->Left=t->Right=NULL;
        BST=t;
    }
    else if(X<BST->Data) Insert(BST->Left,X);
    else if(X>BST->Data) Insert(BST->Right,X);
    return BST;
}

运行结果及报错内容

img

  • 写回答

1条回答 默认 最新

  • 快乐鹦鹉 2022-09-09 15:53
    关注

    如下修改试试

    BinTree Insert( BinTree BST, ElementType X )
    {
        if(BST == NULL) 
        {
            BinTree t=(TNode*)malloc(sizeof(TNode));
            t->Data =X;
            t->Left=t->Right=NULL;
            BST = t;
        }
        else if(X<BST->Data) 
                BST->Left = Insert(BST->Left,X);
        else if(X>BST->Data) 
                BST->Right = Insert(BST->Right,X);
        return BST;
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 9月17日
  • 已采纳回答 9月9日
  • 创建了问题 9月9日

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效