【问题标题】:Relationship between number of nodes and height节点数与高度的关系
【发布时间】:2013-08-07 09:31:58
【问题描述】:

我正在阅读算法设计手册。作者说一棵树的高度是:

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 是表示“叶节点的总数”还是“节点的总数”。

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

【问题讨论】:

    标签: data-structures height binary-search-tree


    【解决方案1】:

    当然,n = 2^h 其中h, n 分别表示树的高度和它的节点数。

    校样草图:

    完美平衡的二叉树有

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

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

    由于叶子数是节点数减去高度减一的完全平衡二叉树中的节点数,所以叶子数是所有节点数的一半(准确地说是@的一半987654323@)。

    所以h 仅变化 1,这通常不会在复杂性考虑方面产生任何实际差异。这种说法可以通过记住它相当于将单个节点树的高度定义为 0(标准)或 1(不寻常,但可能有助于将其与空树区分开来)来说明。

    【讨论】:

    • 那么可以肯定地说,这种高度-节点关系在本质上比精确的等式关系更渐近吗?
    • @QuestMonger:目前的关系是精确的。但是,在应用程序中,您肯定不会有完美平衡的二叉树,因为这需要节点数是 2 (-1) 的幂。确实存在有效的算法来保持平衡的二叉树,因为所有叶子的根路径的长度变化不超过 1。特别是与完美平衡的树相比,您不会失去效率。所以这个关系是尽可能精确的(在纯数学之外,你还是抽象掉了常数因子)。
    【解决方案2】:

    如果您谈论所有节点或仅谈论叶节点并不重要:任何一个都受上下约束,另一个乘以一个常数因子。在完全平衡的二叉树中,全层的节点数是上一层的所有节点数加一。

    【讨论】:

      【解决方案3】:

      在一个完全二叉树中,节点数(n)和树高(h)有如下关系。

      n = 2^(h+1) -1

      这是树的所有节点

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-09-05
        • 2017-05-08
        • 2017-12-08
        • 1970-01-01
        • 2022-12-14
        • 2014-03-08
        • 1970-01-01
        相关资源
        最近更新 更多