平衡二叉树底层中的节点数

时间:2016-05-24 23:47:30

标签: algorithm data-structures binary-search-tree nodes

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

  

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

     

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

我在教科书中找不到任何关于此的公式。有没有办法回答这些问题?请告诉我。

4 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

我得到了我教授的答案。

  

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

     

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

     

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

答案 2 :(得分:0)

使用符号:

  • 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)为真。 由于每个节点都有两个子节点,因此高度增加一个 将有效地用两个新叶子替换每个叶子节点 叶片总数加倍。因此,对于HH=H+1, 树叶总数(LL将增加一倍:

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

对于N,假设N=(2^H)-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的{​​{1}})为N。另外,请记住更改对数底数的公式:

O(log2(N))

并丢弃常数因数log2(N) = log10(N) / log10(2) ,而不是1/log10(2)可以具有任意对数底数,而时间复杂度仅为10,而与选择的对数底数常数无关。

答案 3 :(得分:-1)

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

enter image description here

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