C++ 二叉搜索树操作程序错误:分段错误(核心转储)

C++ 二叉搜索树操作程序错误:分段错误(核心转储),c++,data-structures,binary-search-tree,C++,Data Structures,Binary Search Tree,我在学习二进制搜索树(BST)。在BST插入中,按序、前序遍历、后序遍历操作都可以正常工作,但删除后会出现一些问题。我从这里学习了BST删除操作:。我编写了相同的程序,但在删除删除元素后,它显示0。有时在插入操作中显示分段错误(堆芯转储)。我的代码在这里:(我已经采取了3种情况,我们正在删除的节点有1。无子节点2。1子节点3。2子节点) void索引顺序(结构节点*树) { if(tree==NULL) { 返回; } 顺序(树->左); 考夫特; } 回归树; } 节点*删除(结构节点*树,整

我在学习二进制搜索树(BST)。在BST插入中,按序、前序遍历、后序遍历操作都可以正常工作,但删除后会出现一些问题。我从这里学习了BST删除操作:。我编写了相同的程序,但在删除删除元素后,它显示0。有时在插入操作中显示分段错误(堆芯转储)。我的代码在这里:(我已经采取了3种情况,我们正在删除的节点有1。无子节点2。1子节点3。2子节点)

void索引顺序(结构节点*树)
{
if(tree==NULL)
{
返回;
}
顺序(树->左);
考夫特;
}
回归树;
}
节点*删除(结构节点*树,整数数据)
{
if(tree==NULL)
{
回归树;
}
else if(树->数据<数据)
{
树->右=删除(树->右,数据);
}
else if(树->数据>数据)
{
树->左=删除(树->左,数据);
}
其他的
{
if(tree->right==NULL&&tree->left==NULL)
{
删除树;
tree==NULL;
}
else if(树->右==NULL)
{
结构节点*newnode=tree;
树=树->左;
删除新节点;
}
else if(树->左==NULL)
{
结构节点*newnode=tree;
树=树->右;
删除新节点;
}
其他的
{
结构节点*newnode=FindMin(树->右);
树->数据=新节点->数据;
树->右=删除(树->右,新节点->数据);
}
}
回归树;
}
在这里,tree应该设置为null

        delete tree;
        tree = NULL;

天啊!非常感谢。它正在成功运行。如果您想知道错误的原因,请阅读以下内容:)
        delete tree;
        tree==NULL;
        delete tree;
        tree = NULL;