如果我有总节点数,如何找到二叉树的高度

时间:2013-08-16 16:31:48

标签: algorithm binary-tree

我知道树中的节点总数。用这个如何找到树的高度?

2 个答案:

答案 0 :(得分:0)

如果你有一个平衡的树,那么高度(等级数)是上限(lg(n + 1)),其中上限总是向上舍入到下一个最高整数,而lg是以2为底的对数。如果你有某些类型的自平衡树(它们并不总是完全平衡,但高度平衡),那么也可以给出树高的信息范围。如果您只假设一个任意的二叉树(例如,每个内部节点有两个子节点),则高度可能与(n-1)/ 2一样多,例如,如果您有一个看起来像梳子的树。

答案 1 :(得分:0)

Create a queue.
Push root into the queue.
height = 0
Loop
    nodeCount = size of queue

        // If number of nodes at this level is 0, return height
    if nodeCount is 0
        return Height;
    else
        increase Height

        // Remove nodes of this level and add nodes of 
        // next level
    while (nodeCount > 0)
        pop node from front
        push its children to queue
        decrease nodeCount
       // At this point, queue has nodes of next level

有关详细信息:Click this link