【问题标题】:Finding te number of AVL trees of height N查找高度为 N 的 AVL 树的数量
【发布时间】:2016-02-14 07:40:53
【问题描述】:

我的AVL树的定义是:

"二叉搜索树T中顶点x的平衡因子是x的左子树和右子树的高度之差。

如果二叉树 T 的每个向量的平衡因子为 0、-1 或 1,则称为 AVL 树。”

我需要找到一个回归函数来计算高度为 N 的 AVL 树的数量。我知道解决方案是:

V[i] = V[i-1]^2 + 2V[i-1]*V[i-2]

V[0] = 1
V[1] = 3
V[2] = 15

谁能解释一下?我完全迷路了。

【问题讨论】:

  • 写下一个合适的 AVL 树的递归定义。 “高度为 0 的 AVL 树是空的;高度为 i 的 AVL 树是具有两棵 AVL 树作为子节点的节点,它们的高度是……或……或……”(填空)。
  • 我添加了一个定义,希望它能解决问题,对不起
  • 我知道在哪里可以找到通常的定义。您需要重写定义,使其明确地递归,然后查看并分析它,也许会发现此递归定义与您拥有的公式之间的相似之处。我已经为您提供了递归定义的模板。
  • 谢谢!终于明白了

标签: algorithm dynamic tree


【解决方案1】:

感谢 n.m. 的 cmets,我自己搞定了。

答案如下: v[i] = v[i-1]v[i-1] + v[i-1]v[i-2] + v[i-2]v[i-1]

第一个组件是两个子树的高度相同 (0),第二个组件是左侧树的高度较大 (1),第三个组件是右侧树的高度较大(-1)。

【讨论】:

    猜你喜欢
    • 2013-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多