【发布时间】:2020-09-16 09:10:34
【问题描述】:
我最近在一次采访中被要求告诉有 n 个未标记节点的 BST 是不可能的。但我无法理解 BST 中未标记节点的意义,也无法正确回答。这个问题的正确答案应该是什么?
【问题讨论】:
-
当节点没有信息时,“BST”中的“S”是无关紧要的。
标签: tree binary-search-tree catalan
我最近在一次采访中被要求告诉有 n 个未标记节点的 BST 是不可能的。但我无法理解 BST 中未标记节点的意义,也无法正确回答。这个问题的正确答案应该是什么?
【问题讨论】:
标签: tree binary-search-tree catalan
确实,当我看到带有未标记节点的 BST 时,我也会感到惊讶。 BST 仅在节点携带信息时才有意义。
我想他们只是指二叉树。对于那个计数问题,您似乎已经通过添加catalan 标签回答了这个问题。
如果我们将 Cn 称为可以用 n 个节点生成的二叉树的数量,那么我们可以将问题分解为根的子树的可能性。当所有非根节点都在左子树中时,首先计算树的数量,然后当其中一个实际上在右子树中时,......等等,然后将所有这些计数相加。
...这正是Catalan numbers 给出的递归关系。
而且把它写成递归函数(伪代码)也不难:
CountBT(n):
if n == 0:
return 1
total = 0
for i = 0 to n:
total = total + CountBT(i) * CountBT(n - i)
return total
使用记忆可以提高效率。
【讨论】: