节点删除的问题
来源:5-8 二分搜索树节点的删除(Hubbard Deletion)
易萧
2017-06-13
为什么要建立新的节点呢,可不可以直接复制删除呢,如下:
Node *successor = minimum(node->right); successor->left = node->left; successor->right = node->right; delete node; return successor;
这么做可能使successor的前驱和后继断开了。可以设置一个前驱指针,写一个内置的最小值查找来代替minimum吧,删除的时候只增加一句prev->right = successor->right;
写回答
1回答
-
赞!不建立新的节点是完全可以的。
但就像你后面补充的内容一样,还有一些细节需要处理。在课程中,我以讲清楚Hubbard Deletion的逻辑为主,尽量复用之前的代码。但这确实不是最优的实现。有兴趣可以自己亲自实现一下这个思路哦:)
012017-06-16
相似问题