再努力一点点.. 2022-09-04 08:28 采纳率: 88.9%
浏览 19
已结题

二叉搜索树创建失败不知道为什么?

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

通过不断插入创建一个二叉搜索树,无法遍历输出

问题相关代码,请勿粘贴截图
#include<iostream>

using namespace std;

typedef struct BSTNode
{
  int data;
  struct BSTNode* lchild,*rchild;
}*BSTree;
BSTree T;  // 定义一棵二叉搜索树

void InsertBST(BSTree &T,int x)   // 插入
{
    if(!T)   // 空结点,动态申请一个地址
    {
        BSTNode *S = new BSTNode;
        S->data = x;
        S->lchild=S->rchild=NULL;
        T=S;
    }
    else if(x<T->data) InsertBST(T->lchild,x);  // 比根节点小,插入到左子树
    else if(x>T->data) InsertBST(T->rchild,x);  // 比根节点大,插入到右子树
}
void PreOrderTraversal(BSTree T)  // 先序遍历
{
    if(!T) return;
    printf(" %d",T->data);
    PreOrderTraversal(T->lchild);
    PreOrderTraversal(T->rchild);
}
int main()
{
   for(int i=0;i<9;i++)
   {
     int x;
     cin>>x;
     InsertBST(T,x);
   }
   PreOrderTraversal(T);
   return 0;
}

运行结果及报错内容

img

  • 写回答

1条回答 默认 最新

  • 真相重于对错 2022-09-04 08:52
    关注

    T没有初始化

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

报告相同问题?

问题事件

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