【问题标题】:Don't understand this Binary Search Tree (BST) example algorithm不明白这个二叉搜索树 (BST) 示例算法
【发布时间】:2011-04-12 19:58:09
【问题描述】:

here的删除代码中。

我不明白删除代码的第一个sn-p(节点没有两个孩子)。

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

代码只是删除节点,并没有将父节点的指针设置为现在孤立的子节点。

我错过了什么吗?

【问题讨论】:

    标签: c++ data-structures binary-search-tree


    【解决方案1】:

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

    这是真的,因为删除函数接受一个类型为 BSTNode** 节点的参数。这不是指向节点的指针。这是一个指向父节点的指针指向节点本身的指针。这可能有点草率,但我必须承认,在意识到代码的作用之后,它是一种优雅的解决方案。因此,当您重写 (*node) 时,您不是在重写节点本身,而是在重写节点的父节点的 指向节点的指针。实际上,代码正在以略微变态的方式执行您的建议:D。希望你明白我的意思,我希望我做对了。

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


    【讨论】:

      猜你喜欢
      • 2020-09-03
      • 1970-01-01
      • 1970-01-01
      • 2019-04-09
      • 2019-05-06
      • 2012-05-13
      • 1970-01-01
      • 2012-06-17
      • 1970-01-01
      相关资源
      最近更新 更多