【问题标题】:Binary Search Tree Rules二叉搜索树规则
【发布时间】:2021-11-28 22:02:04
【问题描述】:

为什么这个二叉树被认为是无效的二叉搜索树:

【问题讨论】:

  • 嗨@Siddhartha,下面的解决方案能帮助您理解这里的主要概念吗?请告诉我们。

标签: algorithm data-structures binary-search-tree


【解决方案1】:

值 22 放错了位置。根 (17) 左侧的节点不应大于它。这不仅是直接子树 (6) 的规则,而且对于所有左子树都必须为真。

想象一下,您将使用二分搜索在这棵树中搜索值 22:然后您将 22 与根的值进行比较,并决定查看 子树(因为它更大)。你不会在那里找到它,因此你会得出结论,这棵树的值不是 22。

【讨论】:

    【解决方案2】:

    二叉树:在计算机科学中,二叉树是一种树数据结构,其中每个节点最多有两个孩子,称为左孩子右孩子

    二叉搜索树:在计算机科学中,二叉搜索树 (BST),也称为 有序排序二叉树,是一个有根的二叉树数据结构,其内部节点每个都存储一个大于该节点左子树中所有键且小于其右子树中所有键的键。

    请注意,定义涉及术语subtree,而不是child。我认为您对此有些困惑。

    • 正确定义:存储一个大于节点左子树中所有键且小于其右子树中所有键的键
    • 不正确的定义:存储的键大于节点的左孩子中的所有键且小于其右孩子中的所有键。

    为什么是子树?好吧,因为我们想以明确的方式执行insert 操作:如果我们将 17、6 和 19 放入二叉树并寻找插入 22 的节点位置,我们应该把它放在哪里?
    如果第二个定义为真,那么将 22 放置在何处将是不确定的。我们可以将其放置为 9 的右孩子或 19 的右孩子。
    第一个定义要求我们把它作为 19 的右孩子。

    参考:
    Binary Tree
    Binary Search Tree

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-05
      • 1970-01-01
      • 2023-03-08
      • 1970-01-01
      • 2010-10-26
      • 1970-01-01
      相关资源
      最近更新 更多