我正在阅读算法设计手册。作者指出树的高度是:
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.
然后他接着说,一个完美平衡的二叉搜索树的高度将是:
h = log n
我想知道第二个语句中的n
是否表示“叶节点的总数”或“节点的总数”。
这提出了一个更大的问题,节点总数和完美平衡的二叉搜索树的高度之间是否存在数学关系?
答案 0 :(得分:5)
当然,n = 2^h
其中h, n
分别表示树的高度和节点数。
校对草图:
完美平衡的二叉树有
关于完美平衡二叉树中的叶节点:
因为叶子的数量是节点的数量减去完美平衡的二叉树中的节点数量,其高度递减1,所以叶子的数量是所有节点数量的一半(确切地说,是{的一半} {1}})。
所以n+1
只是变化1,这通常不会在复杂性方面产生任何实际影响。该声明可以通过记住它与将单个节点树的高度定义为0(标准)或1(异常,但可能很方便区分它与空树)相同的变化来说明。
答案 1 :(得分:2)
如果你谈论所有节点或只是叶子节点,这并不重要:要么被上面和下面的边界绑定,要么乘以常数因子。在完美平衡的二叉树中,完整级别上的节点数是高于1的所有节点的数量。
答案 2 :(得分:0)
在完整的二叉树中,节点数(n)和树高(h)在下面有如下关系。
n = 2 ^(h + 1)-1
这是树的所有节点