微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。