C++ Don';我不理解这个二叉搜索树(BST)示例算法

C++ Don';我不理解这个二叉搜索树(BST)示例算法,c++,data-structures,binary-search-tree,C++,Data Structures,Binary Search Tree,从中删除代码 我不理解删除代码的第一个片段(节点没有两个子节点) 如果要删除的节点本身有一个父节点和一个子节点(即该节点有一个子节点),这是如何工作的 代码只是删除节点,而不是设置父节点指向现在孤立的子节点的指针 我遗漏了什么吗?我可能错了,但引用站点上的代码似乎没有问题。不过我还没有测试过 这是正确的,因为delete函数接受一个类型为BSTNode**node的参数。这不是指向节点的指针。这是指向父节点的指针指向节点本身的指针。这可能有点草率,但我必须承认,在意识到代码的作用后,它是一个优雅

从中删除代码

我不理解删除代码的第一个片段(节点没有两个子节点)

如果要删除的节点本身有一个父节点和一个子节点(即该节点有一个子节点),这是如何工作的

代码只是删除节点,而不是设置父节点指向现在孤立的子节点的指针


我遗漏了什么吗?

我可能错了,但引用站点上的代码似乎没有问题。不过我还没有测试过

这是正确的,因为delete函数接受一个类型为BSTNode**node的参数。这不是指向节点的指针。这是指向父节点的指针指向节点本身的指针。这可能有点草率,但我必须承认,在意识到代码的作用后,它是一个优雅的解决方案。因此,当您重写(*node)时,您不是在重写节点本身,而是在重写节点的父节点指向该节点的指针。实际上,代码以一种有点反常的方式执行了您的建议:D.希望您理解我的意思,并且希望我理解正确

我还建议您进一步阅读关于红黑树的内容,因为本文只提供了创建树的细节,但所描述的结构对于其高度没有渐近界限。例如,如果在该结构中推送排序值,则它将是一个连接列表,而不是一个平衡树