n个未标记的节点可能没有BST

问题描述

我最近被要求在一次采访中告诉我们在没有n个未标记节点的情况下可能发生的BST。但是我无法理解BST中未标记节点的意义,因此无法正确回答。该问题的适当答案应该是什么?

解决方法

的确,当我看到带有未标记节点的BST时,我也会感到惊讶。 BST仅在节点携带信息时才有意义。

我想它们只是指二叉树。对于这个计数问题,您似乎已经通过添加catalan标签来回答了这个问题。

如果我们将 C n 称为可以通过 n 节点生成的二叉树的数量,则可以将问题分解为根子树的可能性。首先,当所有非根节点都在左子树中时,计算树的数量;然后当其中一个实际上在右子树中时,…etc,然后将所有这些计数合计。

  • C 0 = 1
  • C n + 1 = ∑ i = 0..n C i C ni

...,这正是给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

使用备忘录可以提高效率。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...