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)