gpt4 book ai didi

c - 在 C 中将值插入二叉搜索树?

转载 作者:行者123 更新时间:2023-11-30 14:22:49 24 4
gpt4 key购买 nike

我有一个包含我的结构的 .h 文件,我不能编辑此文件:

struct KnightTree 
{
int key;
int level;
int balance; //will be used in AVL only, and be ignored in other cases.
KnightTree* pLeftChild;
KnightTree* pRightChild;
};

还有一个我在这里编写代码的 .cpp 文件,我编写了一个代码来将 2 个值(键和级别)插入到 BST 中:

void BSTinsert(KnightTree* tree, int k, int lvl)
{
KnightTree* newnode;
if (tree == NULL)
{
newnode->key=k;
newnode->level=lvl;
newnode->pLeftChild=NULL;
newnode->pRightChild=NULL;
tree = newnode;
}
else
{
if (tree->key > k)
BSTinsert(tree->pLeftChild,k,lvl);
else if (tree->key <= k)
BSTinsert(tree->pRightChild,k,lvl);
}
}

但是当我运行它时,控制台“思考”了大约 3 秒,并弹出错误消息“exe 已停止工作”,所以我必须关闭程序 。我认为很简单,但我现在有点困惑...我正在使用 Visual C++ 6.0(我必须使用这个旧版本...)

谢谢大家!

最佳答案

您至少有 2 个主要问题:

  1. 您没有为您的newnode分配内存,因此通过解决它只会造成内存损坏。
  2. 您不会将新创建的节点附加到树上,分配 tree = newnode 不会创建到树的必要链接。

继续解决这两个问题。

还有一件事:在此处发布问题之前,您是否尝试过实际调试它?

关于c - 在 C 中将值插入二叉搜索树?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13449872/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com