﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-Kyee编程之道-文章分类-算法</title><link>http://www.cppblog.com/kyee/category/16949.html</link><description>程序员应该脚踏实地，切忌心浮气燥。</description><language>zh-cn</language><lastBuildDate>Sun, 22 May 2011 03:09:18 GMT</lastBuildDate><pubDate>Sun, 22 May 2011 03:09:18 GMT</pubDate><ttl>60</ttl><item><title>关于平衡二叉树(AVL tree)旋转后平衡标志调整的计算公式</title><link>http://www.cppblog.com/kyee/articles/146903.html</link><dc:creator>Kyee Ye</dc:creator><author>Kyee Ye</author><pubDate>Sun, 22 May 2011 02:44:00 GMT</pubDate><guid>http://www.cppblog.com/kyee/articles/146903.html</guid><wfw:comment>http://www.cppblog.com/kyee/comments/146903.html</wfw:comment><comments>http://www.cppblog.com/kyee/articles/146903.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/kyee/comments/commentRss/146903.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/kyee/services/trackbacks/146903.html</trackback:ping><description><![CDATA[<p><span style="font-family: Courier">--------------------------------------------------------------------------------</span><br /><span style="font-family: Courier">标题: 关于平衡二叉树(AVL tree)旋转后平衡标志调整的计算公式</span><br /><span style="font-family: Courier">作者: 叶飞虎</span><br /><span style="font-family: Courier">建立: 2009.10.18</span><br /><span style="font-family: Courier">变更: 2010.06.22</span><br /><span style="font-family: Courier">--------------------------------------------------------------------------------</span></p>
<p><span style="font-family: Courier">1. 引言</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 平衡二叉树的平衡标志计算可以说是最简单的, 也可以说是AVL树中最难的。平衡标</span><br /><span style="font-family: Courier">&nbsp;&nbsp; 志计算方法有两种：</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a. Balance = Height(Left) - Height(Right);</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; b. Balance = Height(Right) - Height(Left);</span></p>
<p><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 其中 Height 为结点的子树高度(&gt;= 0), 算法简单就是说只要左右子树高度相减即可,</span><br /><span style="font-family: Courier">&nbsp;&nbsp; 但运行效率不高。当结点数上千以上时, 频繁增删结点带来开销会相当可观, 正因如此,</span><br /><span style="font-family: Courier">&nbsp;&nbsp; 本人通过推理得到的计算公式就非常重要了。</span></p>
<p><br /><span style="font-family: Courier">2. 假设</span><br /><span style="font-family: Courier">&nbsp;&nbsp; a. 结点定义</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; typedef struct TAVLNode</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; void*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Item;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 存放项</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TAVLNode*&nbsp;&nbsp; Left;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 左子结点</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TAVLNode*&nbsp;&nbsp; Right;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 右子结点</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TAVLNode*&nbsp;&nbsp; Parent;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 父结点</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; char&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Balance;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 平衡标志: [-1..1]</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } *PAVLNode;</span></p>
<p><span style="font-family: Courier">&nbsp;&nbsp; b. 平衡增量 D 和 D', D 为左子树增量, D' 为右子树增量, 且 D = -D', D 可以定义</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 为 1 或 -1, 其中:</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1). D = 1&nbsp; 则表示平衡标志计算方法为: Height(Left) - Height(Right)</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2). D = -1 则表示平衡标志计算方法为: Height(Right) - Height(Left)</span></p>
<p><span style="font-family: Courier">&nbsp;&nbsp; c. 结点高度的函数 H, 则结点 n 有:</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; H(n) = M(H(n.Left), H(n.Right)) + D, 同时 H(NULL) = 0</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 其中, M(H(n.Left), H(n.Right) 函数描述如下:</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1). |H(n.Left)| &gt;= |H(n.Right)| 则值为: H(n.Left)</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2). |H(n.Left)| &lt;&nbsp; |H(n.Right)| 则值为: H(n.Right)</span></p>
<p><span style="font-family: Courier">&nbsp;&nbsp; d. 结点平衡标志的函数 B, 则结点 n 有:</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B(n) = n.Balance = H(n.Left) - H(n.Right)</span></p>
<p><br /><span style="font-family: Courier">3. 旋转方式(Left-Left)</span><br /><span style="font-family: Courier">&nbsp;&nbsp; a. 旋转前的树结构和函数方程如下:</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (p)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B(p) = H(t) - H(1) = 2D</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; / \</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (t) (1)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B(t) = H(n) - H(2)</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; / \</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (n) (2)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B(n) = H(3) - H(4)</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; / \</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (3) (4)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 同时必定存在: B(t) != D', 可以用反证法证明.</span></p>
<p><span style="font-family: Courier">&nbsp;&nbsp; b. 旋转后的树结构和函数方程如下: (注: 结点 p, t, n 旋转后分别定义为 P, T, N)</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ( T&nbsp; )&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B(T) = H(N) - H(P)</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /&nbsp;&nbsp;&nbsp; \&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B(N) = H(3) - H(4)</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (N)&nbsp;&nbsp;&nbsp; (P)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B(P) = H(2) - H(1)</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; / \&nbsp;&nbsp;&nbsp; / \</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (3) (4) (2)(1)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 同时必定存在: B(P) != D', 可以用反证法证明.</span></p>
<p><span style="font-family: Courier">&nbsp;&nbsp; c. B(N) 公式</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B(N) = H(3) - H(4)&nbsp;&nbsp; \</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B(n) = H(3) - H(4)&nbsp;&nbsp; /&nbsp; =&gt;&nbsp;&nbsp;&nbsp; B(N) = B(n) = n.Balance</span></p>
<p><span style="font-family: Courier">&nbsp;&nbsp; d. B(P) 公式</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B(t) = H(n) - H(2)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&gt;&nbsp;&nbsp;&nbsp; H(2) = H(n) - B(t)&nbsp; -+</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B(p) = H(t) - H(1) = 2D =&gt;&nbsp;&nbsp;&nbsp; H(1) = H(t) - 2D&nbsp;&nbsp;&nbsp;&nbsp; +</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B(P) = H(2) - H(1)&nbsp; -+</span></p>
<p><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&gt;&nbsp;&nbsp;&nbsp; B(P) = H(n) - H(t) - B(t) + 2D&nbsp;&nbsp; \</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 由于必定: B(t) != D'&nbsp;&nbsp;&nbsp; =&gt;&nbsp;&nbsp;&nbsp; H(t) = H(n) + D&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&gt; B(P) = D - B(t) = D - t.Balance</span></p>
<p><span style="font-family: Courier">&nbsp;&nbsp; e. B(T) 公式</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B(t) = H(n) - H(2)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&gt;&nbsp;&nbsp;&nbsp; H(n) = B(t) + H(2)&nbsp; -+</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 由于必定: H(N) == H(n)&nbsp; =&gt;&nbsp;&nbsp;&nbsp; B(T) = H(n) - H(P)&nbsp;&nbsp; +</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 由于必定: B(P) != D'&nbsp;&nbsp;&nbsp; =&gt;&nbsp;&nbsp;&nbsp; H(P) = H(2) + D&nbsp;&nbsp;&nbsp;&nbsp; -+</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&gt; B(T) = B(t) + H(2) - (H(2) + D)</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&gt; B(T) = B(t) - D = t.Balance - D</span></p>
<p><span style="font-family: Courier">&nbsp;&nbsp; f. H(T) - H(p) 公式 (即调整后的高度变化)</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B(T) =&nbsp; B(t) - D&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&gt; B(T) != D</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&gt; H(T)&nbsp; = H(P) + D&nbsp;&nbsp;&nbsp;&nbsp; -+</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; H(P) = / H(1) + 2D&nbsp;&nbsp; 当 B(P) == D&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; +</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \ H(1) + D&nbsp;&nbsp;&nbsp; 当 B(P) == 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -+</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&gt; H(T) = / H(1) + 3D&nbsp;&nbsp; 当 B(P) == D&nbsp;&nbsp; -+</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \ H(1) + 2D&nbsp;&nbsp; 当 B(P) == 0&nbsp;&nbsp;&nbsp; |</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; + =&gt;</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; H(p) = H(t) + D&nbsp;&nbsp; \&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; H(t) = H(1) + 2D&nbsp; /&nbsp;&nbsp;&nbsp;&nbsp; =&gt; H(p) = H(1) + 3D&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -+</span></p>
<p><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; H(T) - H(p) = / 0&nbsp;&nbsp;&nbsp; 当 B(P) == D =&gt; B(t) == 0</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \ -D&nbsp;&nbsp; 当 B(P) == 0 =&gt; B(t) != 0</span></p>
<p><br /><span style="font-family: Courier">4. 旋转方式(Left-Right)</span><br /><span style="font-family: Courier">&nbsp;&nbsp; a. 旋转前的树结构和函数方程如下:</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (p)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B(p) = H(t) - H(1) = 2D</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; / \</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (t) (1)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B(t) = H(2) - H(n)</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; / \</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (2) (n)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B(n) = H(3) - H(4)</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; / \</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (3) (4)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 同时必定存在: B(t) != D, 可以用反证法证明.</span></p>
<p><span style="font-family: Courier">&nbsp;&nbsp; b. 旋转后的树结构和函数方程如下: (注: 结点 p, t, n 旋转后分别定义为 P, T, N)</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ( N&nbsp; )&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B(N) = H(T) - H(P)</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /&nbsp;&nbsp;&nbsp; \&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B(T) = H(2) - H(3)</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (T)&nbsp;&nbsp;&nbsp; (P)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B(P) = H(4) - H(1)</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; / \&nbsp;&nbsp;&nbsp; / \</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (2) (3) (4)(1)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 同时必定存在: B(P) != D, 可以用反证法证明.</span></p>
<p><span style="font-family: Courier">&nbsp;&nbsp; c. B(T) 公式</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; H(n) = / H(3) + 2D&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 当 B(n) == D'</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \ H(3) + D&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 当 B(n) != D'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -+</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B(t) = H(2) - H(n)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&gt;&nbsp;&nbsp;&nbsp; H(2) = H(n) + B(t)&nbsp;&nbsp; \&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; +</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B(T) = H(2) - H(3)&nbsp;&nbsp; /&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&gt; B(T) = H(n) - H(3) + B(t)&nbsp; -+</span></p>
<p><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&gt;&nbsp;&nbsp;&nbsp; B(T) = / B(t) + 2D&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 当 B(n) == D'</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \ B(t) + D&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 当 B(n) != D'</span></p>
<p><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&gt;&nbsp;&nbsp;&nbsp; B(T) = / t.Balance + 2D&nbsp;&nbsp;&nbsp; 当 B(n) == D'</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \ t.Balance + D&nbsp;&nbsp;&nbsp;&nbsp; 当 B(n) != D'</span></p>
<p><span style="font-family: Courier">&nbsp;&nbsp; d. B(P) 公式</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; H(n) = / H(4) + 2D&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 当 B(n) == D</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \ H(4) + D&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 当 B(n) != D&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -+</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 由于必定: B(t) != D&nbsp;&nbsp;&nbsp;&nbsp; =&gt;&nbsp;&nbsp;&nbsp; H(t) = H(n) + D&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; +</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B(p) = H(t) - H(1) = 2D =&gt;&nbsp;&nbsp;&nbsp; H(1) = H(t) - 2D&nbsp;&nbsp;&nbsp;&nbsp; /&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&gt; H(1) = H(n) - D&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -+</span></p>
<p><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&gt;&nbsp;&nbsp;&nbsp; H(1) = / H(4) + D&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 当 B(n) == D</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \ H(4)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 当 B(n) != D&nbsp;&nbsp; -+</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; +</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B(P) = H(4) - H(1)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -+</span></p>
<p><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&gt;&nbsp;&nbsp;&nbsp; B(P) = / D'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 当 B(n) == D</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \ 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 当 B(n) != D</span></p>
<p><span style="font-family: Courier">&nbsp;&nbsp; e. B(N) 公式</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; +- 2D&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 当 B(T) == 2D&nbsp; -+</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 定义 X(T) = +&nbsp; D&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 当 B(T) == D&nbsp;&nbsp;&nbsp; |</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; +- 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 当 B(T) == 0&nbsp;&nbsp;&nbsp; |</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&gt; X(T) = B(T)&nbsp; + =&gt; H(T) = H(3) + B(T) + D&nbsp;&nbsp;&nbsp;&nbsp; -+</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; +- H(3) + 3D&nbsp;&nbsp;&nbsp;&nbsp; 当 B(T) == 2D&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; H(T) = +&nbsp; H(3) + 2D&nbsp;&nbsp;&nbsp;&nbsp; 当 B(T) == D&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; +- H(3) + D&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 当 B(T) == 0&nbsp;&nbsp; -+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B(N) = H(T) - H(P)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; +</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 定义 X(P) = / D&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 当 B(P) == D'&nbsp; -+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \ 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 当 B(P) == 0&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&gt; X(P) = -B(P) + =&gt; H(P) = H(4) - B(P) + D&nbsp;&nbsp;&nbsp;&nbsp; -+</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; H(P) = / H(4) + 2D&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 当 B(P) == D'&nbsp;&nbsp; |</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \ H(4) + D&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 当 B(P) == 0&nbsp;&nbsp; -+</span></p>
<p><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&gt;&nbsp;&nbsp;&nbsp; B(N) = H(3) - H(4) + (B(T) + B(P))&nbsp; \</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B(n) = H(3) - H(4)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&gt; B(N) = B(n) + B(T) + B(P)</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = n.Balance + B(T) + B(P)</span></p>
<p><span style="font-family: Courier">&nbsp;&nbsp; f. H(N) - H(p) 公式 (即调整后的高度变化)</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 由于 B(T) in {0, D, 2D} =&gt; H(T) = H(2) + D</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 若 B(n) != D'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&gt; B(N) = B(T) =&gt; H(N) = H(T) + D = H(2) + 2D&nbsp;&nbsp; -+</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 若 B(n) == D'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&gt; B(P) = 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B(T) = B(t) + 2D&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B(N) = B(n) + B(T) + B(P)&nbsp; -+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; +</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&gt; B(N) = B(t) + D =&gt; H(N) = H(T) + D&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = H(2) + 2D&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -+</span></p>
<p><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&gt; H(N) = H(2) + 2D&nbsp;&nbsp;&nbsp;&nbsp; -+</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; H(p) = / H(2) + 2D&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 当 B(t) == 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; + =&gt;</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \ H(2) + 3D&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 当 B(t) != 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -+</span></p>
<p><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; H(N) - H(p) = / 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 当 B(t) == 0</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \ -D&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 当 B(t) != 0</span></p>
<p><br /><span style="font-family: Courier">5. 旋转方式(Right-Left)</span><br /><span style="font-family: Courier">&nbsp;&nbsp; a. 旋转前的树结构和函数方程如下:</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 注: 因旋转方式与 (Left-Right) 左右对称, 所以推理方法相同, 故省略推理过程</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (p)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B(p) = H(1) - H(t) = 2D'</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; / \</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (1) (t)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B(t) = H(n) - H(2)</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; / \</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (n) (2)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B(n) = H(3) - H(4)</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; / \</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (3) (4)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 同时必定存在: B(t) != D', 可以用反证法证明.</span></p>
<p><span style="font-family: Courier">&nbsp;&nbsp; b. 旋转后的树结构和函数方程如下: (注: 结点 p, t, n 旋转后分别定义为 P, T, N)</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ( N&nbsp; )&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B(N) = H(T) - H(P)</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /&nbsp;&nbsp;&nbsp; \&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B(P) = H(1) - H(3)</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (P)&nbsp;&nbsp;&nbsp; (T)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B(T) = H(4) - H(2)</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; / \&nbsp;&nbsp;&nbsp; / \</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (1) (3) (4)(2)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 同时必定存在: B(P) != D', 可以用反证法证明.</span></p>
<p><span style="font-family: Courier">&nbsp;&nbsp; c. B(T) 公式</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B(T) = / t.Balance + 2D'当 B(n) == D</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \ t.Balance + D' 当 B(n) != D</span></p>
<p><span style="font-family: Courier">&nbsp;&nbsp; d. B(P) 公式</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B(P) = / D&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 当 B(n) == D'</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \ 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 当 B(n) != D'</span></p>
<p><span style="font-family: Courier">&nbsp;&nbsp; e. B(N) 公式</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B(N) = n.Balance + B(P) + B(T)</span></p>
<p><span style="font-family: Courier">&nbsp;&nbsp; f. H(N) - H(p) 公式 (即调整后的高度变化)</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; H(N) - H(p) = / 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 当 B(t) == 0</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \ -D&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 当 B(t) != 0</span></p>
<p><br /><span style="font-family: Courier">6. 旋转方式(Right-Right)</span><br /><span style="font-family: Courier">&nbsp;&nbsp; a. 旋转前的树结构和函数方程如下:</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 注: 因旋转方式与 (Left-Left) 左右对称, 所以推理方法相同, 故省略推理过程</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (p)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B(p) = H(1) - H(t) = 2D'</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; / \</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (1) (t)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B(t) = H(2) - H(n)</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; / \</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (2) (n)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B(n) = H(3) - H(4)</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; / \</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (3) (4)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 同时必定存在: B(t) != D, 可以用反证法证明.</span></p>
<p><span style="font-family: Courier">&nbsp;&nbsp; b. 旋转后的树结构和函数方程如下: (注: 结点 p, t, n 旋转后分别定义为 P, T, N)</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ( T&nbsp; )&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B(T) = H(P) - H(N)</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /&nbsp;&nbsp;&nbsp; \&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B(P) = H(1) - H(2)</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (P)&nbsp;&nbsp;&nbsp; (N)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B(N) = H(3) - H(4)</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; / \&nbsp;&nbsp;&nbsp; / \</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (1) (2) (3)(4)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 同时必定存在: B(P) != D, 可以用反证法证明.</span></p>
<p><span style="font-family: Courier">&nbsp;&nbsp; c. B(N) 公式</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B(N) = B(n) = n.Balance</span></p>
<p><span style="font-family: Courier">&nbsp;&nbsp; d. B(P) 公式</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B(P) = D' - B(t) = D' - t.Balance</span></p>
<p><span style="font-family: Courier">&nbsp;&nbsp; e. B(T) 公式</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B(T) = B(t) - D' = t.Balance - D'</span></p>
<p><span style="font-family: Courier">&nbsp;&nbsp; f. H(T) - H(p) 公式 (即调整后的高度变化)</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B(T) =&nbsp; B(t) - D'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&gt; B(T) != D'</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&gt; H(T)&nbsp; = H(P) + D&nbsp;&nbsp;&nbsp;&nbsp; -+</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; H(P) = / H(1) + 2D&nbsp;&nbsp; 当 B(P) == D'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; +</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \ H(1) + D&nbsp;&nbsp;&nbsp; 当 B(P) == 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -+</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&gt; H(T) = / H(1) + 3D&nbsp;&nbsp; 当 B(P) == D'&nbsp; -+</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \ H(1) + 2D&nbsp;&nbsp; 当 B(P) == 0&nbsp;&nbsp;&nbsp; |</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; + =&gt;</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; H(p) = H(t) + D&nbsp;&nbsp; \&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; H(t) = H(1) + 2D&nbsp; /&nbsp;&nbsp;&nbsp;&nbsp; =&gt; H(p) = H(1) + 3D&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -+</span></p>
<p><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; H(T) - H(p) = / 0&nbsp;&nbsp;&nbsp; 当 B(P) == D'=&gt; B(t) == 0</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \ -D&nbsp;&nbsp; 当 B(P) == 0 =&gt; B(t) != 0</span></p>
<p><br /><span style="font-family: Courier">7. 增/删结点的要点分析</span><br /><span style="font-family: Courier">&nbsp;&nbsp; a. 插入结点</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 插入结点沿着根结点向上增加平衡值, 若检测到 p 为 2D 或 2D' 时, 只要使用 LL,</span><br /><span style="font-family: Courier">&nbsp;&nbsp; LR, RL, 或 RR 中的一种旋转调整平衡值, 且只要需要一次即可并中止向上增加平衡值.</span></p>
<p><span style="font-family: Courier">&nbsp;&nbsp; b. 删除结点</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1). 由于 LR 旋转, 若 B(t) == 0 且 B(n) == D' 时, 则存在 B(T) = 2D 即失去平</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 衡, 所以在删除结点若遇到 B(t) == 0 时就改为 LL 旋转即可避开 B(T) = 2D;</span></p>
<p><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2). 由于 RL 旋转, 若 B(t) == 0 且 B(n) == D 时, 则存在 B(T) = 2D' 即失去平</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 衡, 所以在删除结点若遇到 B(t) == 0 时就改为 RR 旋转即可避开 B(T) = 2D';</span></p>
<p><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3). 删除结点沿着根结点向上减去平衡值, 若检测到 p 为 2D 或 2D' 时, 只要使用</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LL, LR, RL, 或 RR 中的一种旋转调整平衡值, 当 B(t) == 0 时中止向上减去平</span><br /><span style="font-family: Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 衡值, 否则必须向上减去平衡值.</span></p>
<p>&nbsp;</p><img src ="http://www.cppblog.com/kyee/aggbug/146903.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/kyee/" target="_blank">Kyee Ye</a> 2011-05-22 10:44 <a href="http://www.cppblog.com/kyee/articles/146903.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>