问题
I've been able to create a proof that shows the maximum total nodes in a tree is equal to n = 2^(h+1) - 1 and logically I know that the height of a binary tree is log n (can draw it out to see) but I'm having trouble constructing a formal proof to show that a tree with n leaves has "at least" log n. Every proof I've come across or been able to put together always deals with perfect binary trees, but I need something for any situation. Any tips to lead me in the right direction?
回答1:
Lemma: the number of leaves in a tree of height h
is no more than 2^h
.
Proof: the proof is by induction on h
.
Base Case: for h = 0
, the tree consists of only a single root node which is also a leaf; here, n = 1 = 2^0 = 2^h
, as required.
Induction Hypothesis: assume that all trees of height k
or less have fewer than 2^k
leaves.
Induction Step: we must show that trees of height k+1
have no more than 2^(k+1)
leaves. Consider the left and right subtrees of the root. These are trees of height no more than k
, one less than the height of the whole tree. Therefore, each has at most 2^k
leaves, by the induction hypothesis. Since the total number of leaves is just the sum of the numbers of leaves of the subtrees of the root, we have n = 2^k + 2^k = 2^(k+1)
, as required. This proves the claim.
Theorem: a binary tree with n
leaves has height at least log(n)
.
We have already noted in the lemma that the tree consisting of just the root node has one leaf and height zero, so the claim is true in that case. For trees with more nodes, the proof is by contradiction.
Let n = 2^a + b
where 0 < b <= 2^a
. Now, assume the height of the tree is less than a + 1
, contrary to the theorem we intend to prove. Then the height is at most a
. By the lemma, the maximum number of leaves in a tree of height a
is 2^a
. But our tree has n = 2^a + b > 2^a
leaves, since 0 < b
; a contradiction. Therefore, the assumption that the height was less than a+1
must have been incorrect. This proves the claim.
来源:https://stackoverflow.com/questions/45817413/proof-that-a-binary-tree-with-n-leaves-has-a-height-of-at-least-log-n