Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/149.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 二叉搜索树中的findNode_C++_Find_Binary Search Tree - Fatal编程技术网

C++ 二叉搜索树中的findNode

C++ 二叉搜索树中的findNode,c++,find,binary-search-tree,C++,Find,Binary Search Tree,这个看起来对吗?我的意思是我正在尝试实现删除功能 Node* BST::findNode(int tofind) { Node* node = new Node; node = root; while (node != NULL) { if (node->val == tofind) { return node; } else if (tofind < node->val) {

这个看起来对吗?我的意思是我正在尝试实现删除功能

Node* BST::findNode(int tofind) {
    Node* node = new Node;    
    node = root;
    while (node != NULL) {
        if (node->val == tofind) {
            return node;
        } else if (tofind < node->val) {
            node = node->left;
        } else {
            node = node->right;
        }
    }
}
Node*BST::findNode(int-tofind){
节点*节点=新节点;
节点=根;
while(节点!=NULL){
如果(节点->值==tofind){
返回节点;
}else if(tofindval){
节点=节点->左;
}否则{
节点=节点->右侧;
}
}
}
这是删除,它甚至还没有接近完成,但是

void BST::Delete(int todelete) {

    // bool found = false;

    Node* toDelete = new Node();
    toDelete=findNode(todelete);
    if(toDelete->val!=NULL) {
            cout << toDelete->val << endl;
    }
}
void BST::Delete(int-todelete){
//bool-found=false;
Node*toDelete=新节点();
toDelete=findNode(toDelete);
如果(toDelete->val!=NULL){

cout val哦,等等,这是因为在delete中我应该做:

if(toDelete!=NULL) {
  cout << toDelete->val << endl;
}

findNode()
的主要问题是,您从未返回找到的节点。这就是为什么会出现SEGDFAULT

另外,在
deleteNode()
中,您应该检查
findNode()
是否返回了
NULL
。当然,您还需要对其余的删除逻辑进行编码

最后,两个
新节点
分配是不必要的,并且正在泄漏内存

if(toDelete->val!=NULL)