我有一个包含我的结构的.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(我必须使用这个旧版本......)
谢谢你们!
答案 0 :(得分:2)
您至少有两个主要问题:
newnode
分配内存,因此通过解决它只会造成内存损坏。tree = newnode
不会创建到树的必要链接。从解决这两个问题开始。
还有一件事:你是否曾在此处发布问题之前尝试调试它?