不了解此二叉搜索树(BST)示例算法

|| 从这里删除代码。 我不了解删除代码的第一个片段(该节点没有两个孩子)。 如果要删除的节点本身有一个父级和一个子级(即该节点有一个子级),这如何工作? 该代码只是删除节点,而不是将父级的指针设置为现在孤立的子级。 我想念什么吗?     
已邀请:
我可能错了,但是引用站点上的代码似乎还可以。我还没有测试过。 这是正确的,因为delete函数采用一个BSTNode **节点类型的参数。这不是指向节点的指针。这是指向父节点节点的指针。这可能有点草率,但是我必须承认在意识到代码的作用之后,这是一种优雅的解决方案。因此,当您重写(* node)时,您不是在重写节点本身,而是在重写节点的父节点指向该节点的指针。有效地,代码以一种稍微变态的方式执行了您建议的操作:D。希望您理解我的意思,希望我理解正确。 我还建议您进一步阅读红黑树,因为本文仅提供有关创建树的见识,但是所描述的结构对其高度没有渐近界限。如果,例如您按此结构推送排序后的值,它将是一个连接列表,而不是平衡树。     

要回复问题请先登录注册