找到高度为N的AVL树的数量

时间:2016-02-14 07:40:53

标签: algorithm dynamic tree

我拥有的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

有人可以解释一下吗?我完全迷失了。

1 个答案:

答案 0 :(得分:0)

感谢n.m.的评论。

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

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