另一种二叉搜索树的节点公式

Node formula of a different kind of binary search tree

本文关键字:节点 搜索树 另一种      更新时间:2023-10-16

我正在尝试查找树中定义如下的最大节点数:

根最多可以有 2 个孩子。左侧的每个子树最多可以有 L 个子树。右侧的每个子树最多可以有 R 个子树。

我知道在二叉树中查找节点数的公式是 2^h-1,其中 h 是树中的级别数量。

通俗地说,如何看待这个问题?(我不是很数学。

所以更正式地说,你试图在二叉搜索树中查找节点数,使得树的根有两个子树,左边的每个子树最多有 l 个子树,右边的每个子树都有 r 个子子树。

我们可以分别考虑左树和右树,因为它们不会影响彼此的高度。不考虑根,我们调用根的左子树 L,让我们调用根的右子树 R L 保持不变性,即 L 中的每个节点不能有超过 l 个子节点。同样,R 中的每个节点不能超过 r 个子节点。

让我们构造两个函数 bc,它们取高度 h 并分别输出 LR 中的最大节点数。

b(h) = if h = 1 then 1 else l * b(h - 1)
c(h) = if h = 1 then 1 else r * b(h - 1)

现在,我们可以构造函数 a,它取高度 h 并输出您定义的树的最大节点数。

a(h) = if h = 1 then 1 else (b(h - 1) + c(h - 1))

现在,我们想为 a 找到一个封闭的形式。让我们从找到 bc 的封闭形式开始。

给定正高度 h,因为 l 被重复相乘,除了第一种情况,

b(h) = l^(h - 1)
c(h) = r^(h - 1)
a(h) = if h = 1 then 1 else (l^(h - 1) + r^(h - 1))

我不确定您是否还想在 a 的封闭形式中考虑 h = 1,但给定 h> 1,查找您定义的二叉搜索树的最大节点数的公式为

l^(h - 1) + r^(h - 1)