节点数和高度之间的关系

Que*_*ger 5 height binary-search-tree data-structures

我正在阅读算法设计手册.作者指出,树的高度是:

h = log n, 
where 
h is height 
n = number of leaf nodes
log is log to base d, where d is the maximum number of children allowed per node.
Run Code Online (Sandbox Code Playgroud)

然后他接着说,一个完美平衡的二叉搜索树的高度将是:

h = log n
Run Code Online (Sandbox Code Playgroud)

我想知道n在第二个语句中是否表示" 叶子节点总数"或" 节点总数".

这提出了一个更大的问题,节点总数和完美平衡的二叉搜索树的高度之间是否存在数学关系?

col*_*sar 5

当然,n = 2^h这里h, n分别表示树的高度和节点的数量.

证明草图:

一个完美平衡的二叉树

  • 每个内节点的实际分支因子为2.
  • 每个叶节点的根路径长度相等.

关于完美平衡二叉树中的叶节点:

由于叶子的数量是节点的数量减去高度递减1的完美平衡二叉树中的节点数量,叶子的数量是所有节点的数量的一半(确切地说,是一半n+1).

所以h只是1,这通常不会在复杂性考虑方面产生任何实际差异.该声明可以通过记住它与将单个节点树的高度定义为0(标准)或1(异常,但在将其与空树区分时可能很方便)相同的变化来说明.