设n是二叉树的节点数,那么找出二叉树最小高度的通用函数是什么?
我认为它将是n = floor(log2(n))+ 1。但是,我想,我错了。
答案 0 :(得分:3)
如果你有N个元素,二叉树的最小高度将是log2(N)+1。
答案 1 :(得分:2)
请记住这个概念
要使高度最小,你必须给每个级别,它可以容纳的最大节点数
因此,对于高度为h的树,最多没有树可以容纳的节点总数= 2 ^(h + 1)-1,所以
的 N'LT; = 2 ^(H + 1)-1 强>
解决后你会得到
h> = log(n + 1)base2 -1
现在决定日志的地板或细胞,像这样思考
如果我的登录是3.56 ..那么这意味着直到3级每个级别被完全消耗,最后一级没有完全填满。因此,高度的定义表明它是从根到叶子的最长路径,因此在高度上我们也将包括最后一个级别。
因此ceil比地板更受欢迎。通过这种方法,你也可以找到m-ary树。
答案 2 :(得分:1)
尝试通过归纳证明这一点。二叉树的类型是归纳的,有两个构造函数:
Leaf(v)
Node(Tree,Tree)
现在可以使用结构感应来显示二叉树的最小高度。要获得最小高度,您需要完整的二叉树。这是一个二叉树,对于任何子树,它的子节点都具有相同的高度。 (这基本上意味着如果你画出树,你看不到任何“洞”。)所以假设你有这种类型的树,我们想证明它的高度为floor(log_2(n)) + 1
。您可以通过转动并说:我说有一个高度为floor(log_2(n))+1
的树来证明这个稍微简单一点,证明它最多只有n
个节点。你可以通过对构造函数的结构归纳来证明这一点。