【发布时间】:2013-10-13 23:31:06
【问题描述】:
上周我参加了考试,遇到了以下问题:
描述如何修改二叉搜索树以计算 在 O(h) 时间内使用键 k 的 T 中的条目数。这个算法应该返回一个 整数,而不是列表。
然后在考试后公布答案,如下:
解决方案:通过向每个节点添加内部节点的数量来修改树 以该节点为根的子树。在插入、删除节点时重新计算这些, 并可能进行重组。这将需要以下算法:
但这似乎很混乱。我的问题是我用红色圈出的那些部分的作用是什么?
【问题讨论】:
-
在考试的任何地方都指定了树中节点的结构吗?
count似乎是与每个节点关联的变量,但在该算法的任何地方都没有定义它。 -
抱歉 O(h) 是对的,我的意思是大 O
-
不是这个,我考试的时候看不懂
-
标题说o(h),问题说O(h)。虽然它们与您想知道的无关,但我想指出它们是不同的集合。除此之外。由于搜索树的排序,
T.left.right和T.right.left在这两种情况下仅保存您要查找的值。你知道如果T.left.value == k,那么对于存储的值,你有T.left <= T <= T.right,T.left.value <= T.left.right <= T.value,因为T.left.value == T.value,不等式坍缩为T.left.right的等式;另一个类似。
标签: algorithm data-structures tree big-o binary-search-tree