繁体   English   中英

平衡二叉树底层的节点数

[英]Number of nodes in the bottom level of a balanced binary tree

我想知道在研究二叉搜索树时出现的两个问题。 它们如下:

具有 n 个节点的平衡二叉搜索树的最底层节点的最大数量是多少?

具有 n 个节点的平衡二叉搜索树的最低层节点数是多少?

我在教科书中找不到任何关于此的公式。 有什么办法可以回答这些问题吗? 请让我知道。

假设它是一棵完整的二叉树,叶子中的节点数将始终等于(n/2)+1

对于最小节点数,节点总数可以为1 (满足应该是平衡树的条件)。

使用符号:

  • H = 平衡二叉树高度
  • L = 高度为H的完整二叉树的叶子总数
  • N = 高度为H的完整二叉树中的节点总数

如下所示,该关系为L = (N + 1) / 2 这将是给定树高H的最大叶节点数。 给定高度的最小节点数是1 (不能为零,因为这样树的高度会减一)。

绘制高度增加的树,可以观察到:

H = 1, L = 1, N = 1
H = 2, L = 2, N = 3
H = 3, L = 4, N = 7
H = 4, L = 8, N = 15
...

树高 ( H ) 与叶子总数 ( L ) 和节点总数 ( N ) 之间的关系变得明显:

L = 2^(H-1)
N = (2^H) - 1

使用数学归纳法很容易证明正确性。

上面的例子表明,对于小H是正确的。 只需输入H的值(例如H=1 )并计算LN 假设公式对某些H ,可以证明它们对HH=H+1也成立:

对于L ,假设L=2^(H-1)为真。 由于每个节点有两个子节点,将高度增加 1 将用两个新叶子替换每个叶子节点,从而有效地将叶子总数加倍。 因此,在HH=H+1情况下,叶子的总数( LL )将加倍:

LL = L * 2
   = 2^(H-1) * 2
   = 2^(H)
   = 2^(HH-1)

对于N ,假设N=(2^H)-1为真。 将高度增加 1 ( HH=H+1 ) 使节点总数增加了添加的叶节点总数。 因此,

NN = N + LL
   = (2^H) - 1 + 2^(HH-1)
   = 2^(HH-1) - 1 + 2^(HH-1)
   = 2 * 2^(HH-1) - 1
   = (2^HH) - 1

应用数学归纳法,证明其正确性。

H可以用N表示:

N = (2^H) - 1        // +1 to both sides
N + 1 = 2^H          // apply log2 monotone function to both sides
log2(N+1) = log2(2^H)
          = H * log2(2)
          = H

LN之间的直接关系(这是所问问题的答案)是:

L = 2^(H - 1)                 // replace H = log2(N + 1)
  = 2^(log2(N + 1) - 1)
  = 2^(log2(N + 1) - log2(2))
  = 2^(log2( (N + 1) / 2 ))
  = (N + 1) / 2

对于 Big O 分析,常量被丢弃,因此二叉搜索树查找时间复杂度(即H相对于输入大小N )为O(log2(N)) 另外,请记住更改对数底的公式:

log2(N) = log10(N) / log10(2)

并丢弃常数因子1/log10(2) ,其中10可以有任意对数底,时间复杂度仅为O(log(N))而不管选择的对数底常数如何。

我从我的教授那里得到了答案。

1)最后一层最大节点数: ⌈n/2⌉

如果有一个有 7 个节点的平衡二叉搜索树,那么答案将是 ⌈7/2⌉ = 4,对于一个有 15 个节点的树,答案将是 ⌈15/2⌉ = 8。 但令人不安的是事实上,只有当平衡树的最后一层从左到右完全填充时,这个公式才会给出正确的答案。 例如,具有 5 个节点的平衡二叉搜索树,上述公式给出的答案为 3,这是不正确的,因为具有 5 个节点的树在最后一级最多可以包含 4 个节点。 所以我猜他的意思是完全平衡的二叉搜索树。

2)最后一层的最小节点数: 1

二叉树中L的最大节点数为2^L (假设顶点为 0 层)。 这很容易看出,因为在每个级别,您都会从前一片叶子中生成 2 个孩子。 它是平衡/搜索树的事实是无关紧要的。 所以你必须找到最大的L使得2^L < n并从n减去它。 在数学语言中是:

在此处输入图片说明

最小节点数取决于您平衡树的方式。 可以有高度平衡的树,重量平衡的树,我假设其他平衡的树。 即使使用高度平衡的树,您也可以定义平衡树的含义。 因为从技术上讲,高度为N + 22^N节点树仍然是平衡树。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM