给定密钥是二叉树的成员 - 概率回答

时间:2017-07-13 17:23:40

标签: binary-search-tree probability theory

问题:

给定具有N个节点的BST,其基数为D域(域是节点键的可能值)。 给定域中的密钥但可能是也可能不是BST的成员。 在开始时,我们对树中节点的信心应该是1 / D,但是当我们深入到树中时,D和N都被分成大约一半。这表明我们对我们的密钥是树成员的信心应保持不变,直到我们触底或发现密钥。但是,我不确定这个推理是否完整,因为它似乎更像是从D中选择N个节点。

我在思考this的内容,但这里的推理似乎还不完整。有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:0)

Apriori,你的密钥是树的概率是N / D.

不失一般性,假设节点的值范围是[1..D]。

当你走下树时,要么:

  • 当前节点与您的密钥匹配,因此P = 1
  • 当前节点的值C大于您的键,您向左移动,但您不知道左子树中有多少项。现在你可以做出以下假设之一:

    • 树是平衡的。子树中的范围是[1..C-1],子树中有(D-1)/ 2个节点。因此,P =((D-1)/ 2)/(C-1)
    • 树不平衡。子树中的范围是[1..C-1],并且子树中节点数的最大似然估计是N *(C-1)/ D.因此,P =(N *(C-1)/ D)/(C-1)= N / D. (没有变化)
    • 如果您对树的构建方式有了更多了解 - 可以为子树中的节点数量做出更好的MLE。
  • 当前节点的值C小于您的密钥,您右转,但您不知道右侧子树中有多少项。

    • ...