紅黑樹複雜度證明
阿新 • • 發佈:2018-11-14
證明:紅黑樹的複雜度為O(logn),其中n為節點個數。
只需證定理:一棵有n個節點的紅黑樹高度h至多為2log(n+1)
h =< 2log(n+1)
只需證:高度為h的紅黑樹,包含的節點的數至少為2^(h/2)-1
n => 2^(h/2)-1
根據紅黑樹的性質,如果X為根節點,那麼bh(X) = > h/2,上式可轉化為:
n => 2^(bh(X))-1 => 2^(h/2)-1
同時有:樹總節點的個數大於黑節點的個數
n => n(b)
那麼我們只需證:
n(b) => 2^(bh(X))-1
即證明:黑高度為bh(X)的紅黑樹,包含至少為2^(bh(X))-1的黑節點,X為根節點
某一節點x為根的紅黑樹,黑高度bh(X),至少包含2^[bh(X)] - 1個黑節點;
歸納假設證明:
歸納奠基:當高度bh(X)=0時,黑節點數n(b) = 0 = 2^(bh(X))-1 = 2^(0)-1,原命題成立;
歸納假設:當高度bh(X)=k時,假設該樹至少有為2^(bh(X))-1 = 2^(k)-1個黑節點;
歸納遞推:當高度bh(X)=k+1時,根節點的兩棵子樹的高度肯定為k(紅黑樹性質4),則兩棵子樹上的黑節點個數為2*(2^(bh(X))-1) = 2^(k+1)-2(歸納假設),那麼該樹共有黑節點2^(k+1)-2+1(根節點) = 2^(k+1)-1個黑節點,原命題成立。