从 BST 中删除唯一的节点
Delete the only node from a BST
我的BST只有一个节点。我写了一个代码来删除该节点,但它仍然存在。就像它没有一样...更新。这是我的简单代码,只是为了测试案例
void Delete(BSTree* tree, int& key)
{
if (key == tree->key)
tree=NULL;
}
而且我的BSTree类没有parrent部分。只是值和左右指针。我的代码有什么问题?谢谢!
您没有更改实际的tree
指针。您只是更改在堆栈上分配的指针,指向与传入指针相同的地址。
您需要BSTree *&tree
以便获取对原始指针的引用,以便任何更改都会影响它。
正如Als指出的那样,除了上述内容之外,不要忘记释放内存。
相关文章:
- 反向给定链表中的K节点
- 如果我只是不访问queue_front节点的子节点,而是将它们推到队列中呢?还是BFS吗
- 何时在引用或唯一指针上使用移动语义
- C++优先级队列,按对象的唯一指针的特定方法升序排列
- Boost Graph Library,修复节点大小
- 计算排序向量的向量中唯一值的计数
- C++A*算法并不总是在路径中具有目标节点
- 如何使用Visual Studio 2017在C++中为参数化对象数组使用唯一指针
- 如何找到2个单链表的公共节点
- 计算每个节点的树高,帮助我解释这个代码解决方案
- 为什么我的删除节点函数实际上没有删除节点?
- 通过组合不同的类型来创建唯一的id
- 我们可以删除链表中静态内存中的节点吗
- 如何在pugixml中获取节点的内部XML
- 使用Unique_ptr确保工厂中的对象唯一
- c++多进程编写一个唯一的文件
- 尝试使用 RapidXML 将唯一的 XML 属性追加到节点
- 在节点中使用原始指针和树中的唯一_ptr
- 当链表是列表中唯一的节点时,删除链表的头部.单联
- 从 BST 中删除唯一的节点