[英]findNode in 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 = node->left;
} else {
node = node->right;
}
}
}
这是删除,还没完成,但是,
void BST::Delete(int todelete) {
// bool found = false;
Node* toDelete = new Node();
toDelete=findNode(todelete);
if(toDelete->val!=NULL) {
cout << toDelete->val << endl;
}
}
这会导致分段错误,只是运行该错误,有什么想法吗?
哦,等等,因为在删除中,我应该这样做:
if(toDelete!=NULL) {
cout << toDelete->val << endl;
}
在此之前
if(toDelete->val!=NULL)
findNode()
的主要问题在于,您永远不会返回找到的节点。 这就是为什么您遇到段错误。
另外,在deleteNode()
您应该检查findNode()
是否返回NULL
。 当然,您还需要编写其余删除逻辑的代码。
最后,两个new Node
分配是不必要的,并且正在泄漏内存。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.