已编辑*:我正在研究二叉搜索树的删除功能。我现在正在处理第一个案例。我认为这是正确的,但我想知道它是否可以递归或更有效地完成。任何帮助表示赞赏。假设 BSTSearch 搜索一个节点,isLeaf
如果该节点是叶子,则返回 true,并且每个节点都有一个指针,允许它们访问其父节点。
void
BinarySearchTree::BSTDelete(int x, BSTNode *node){
BSTNode *deleteNode;
deleteNode = BSTSearch(x,node);
if(isLeaf(deleteNode)){
if(deleteNode->sortkey > (deleteNode->parent)->sortkey){
delete (deleteNode->parent)->right;
(deleteNode->parent)->right = NULL;
}
else{
delete (deleteNode->parent)->left;
(deleteNode->parent)->left = NULL;
}
}