⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ds9.3.1.htm

📁 这是清华大学所用的数据结构的电子版教材
💻 HTM
📖 第 1 页 / 共 3 页
字号:
<p class="MsoNormal" style="margin-bottom: 10" align="center"><img border="0" src="ds9.3.4.gif" width="306" height="144"></p>
<blockquote>
  <p class="MsoNormal"><font size="5" color="#FFFFFF"><b>3.<span lang="EN-US">*p</span><span style="font-family:宋体;mso-ascii-font-family:&quot;Times New Roman&quot;;mso-hansi-font-family:
&quot;Times New Roman&quot;">结点既有左子树</span><span lang="EN-US">P<sub>l</sub></span><span style="font-family:宋体;mso-ascii-font-family:&quot;Times New Roman&quot;;mso-hansi-font-family:
&quot;Times New Roman&quot;">又有右子树</span><span lang="EN-US">P<sub>r</sub></span><span style="font-family:宋体;mso-ascii-font-family:&quot;Times New Roman&quot;;mso-hansi-font-family:
&quot;Times New Roman&quot;">,可按中序遍历保持有序进行调整。</span></b></font><font color="#FFFFFF"><b><font size="5"><span style="font-family:宋体;mso-ascii-font-family:&quot;Times New Roman&quot;;mso-hansi-font-family:
&quot;Times New Roman&quot;">设删除</span><span lang="EN-US">*p</span><span style="font-family:
宋体;mso-ascii-font-family:&quot;Times New Roman&quot;;mso-hansi-font-family:&quot;Times New Roman&quot;">结点前,中序遍历序列为:{...C<sub>L</sub>C...Q<sub>L</sub>QS<sub>L</sub>SPP<sub>R</sub>F...}</span></font></b></font></p>
  <p class="MsoNormal"><font size="5" color="#FFFFFF"><b><span style="font-family: 宋体; mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">在删除*P之后,为保持其他元素之间的相对位置不变,可以有两种做法:</span></b></font></p>
  <blockquote>
    <p class="MsoNormal"><font size="5" color="#FFFFFF"><b><span style="font-family: 宋体; mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">a.令*P的左子树为*f的左子树,而*P的右子树为*s的右子树,如图(2)所示;</span></b></font></p>
    <p class="MsoNormal"><font size="5" color="#FFFFFF"><b><span style="font-family: 宋体; mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">b.令*P的直接前驱(或直接后继)替代*P,然后再从二叉树中删去它的直接前驱(或直接后继),如图(1)所示。</span></b></font></p>
  </blockquote>
  <p class="MsoNormal"><font size="5" color="#FFFFFF"><b><span style="mso-spacerun: yes; mso-bidi-font-size: 10.0pt; letter-spacing: -.4pt" lang="EN-US">&nbsp;</span></b></font></p>
  <p class="MsoNormal" align="center"><span lang="EN-US"><span style="mso-spacerun: yes">&nbsp;</span></span><img border="0" src="二叉9.gif" align="middle" width="272" height="426">&nbsp;&nbsp; 
  </p>
  <p class="MsoNormal" align="center"><img border="0" src="二叉10.gif" align="middle" width="235" height="405">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   
  <img border="0" src="二叉12.gif" width="291" height="395"></p>
</blockquote>
<p class="MsoNormal" align="left" style="margin-top: 0; margin-bottom: 0"><b><font size="5" color="#FFFFFF">在二叉排序树上删除一个结点的算法如下所示:</font></b></p>
<p class="MsoNormal" align="left" style="margin-top: 0; margin-bottom: 0"><b><font size="5" color="#FFFFFF">Status    
DelBST(BiTree &amp;T, keyType key)</font></b></p>   
<p class="MsoNormal" align="left" style="margin-top: 0; margin-bottom: 0"><b><font size="5" color="#FFFFFF">{</font></b></p>
<p class="MsoNormal" align="left" style="margin-top: 0; margin-bottom: 0"><b><font size="5" color="#FFFFFF">&nbsp;if(!T)    
return FALSE;</font></b></p>   
<p class="MsoNormal" align="left" style="margin-top: 0; margin-bottom: 0"><b><font size="5" color="#FFFFFF">&nbsp;else 
</font></b></p>
<p class="MsoNormal" align="left" style="margin-top: 0; margin-bottom: 0"><b><font size="5" color="#FFFFFF">&nbsp;{</font></b></p>
<p class="MsoNormal" align="left" style="margin-top: 0; margin-bottom: 0"><b><font size="5" color="#FFFFFF">&nbsp;    
if(key==T-&gt;data.key) return Delete(T);</font></b></p>   
<p class="MsoNormal" align="left" style="margin-top: 0; margin-bottom: 0"><b><font size="5" color="#FFFFFF">&nbsp;    
</font><font color="#FFFFFF" size="4">else if(key&gt;T-&gt;data.key) return    
DelBST(T-&gt;lchild.key);</font></b></p>
<p class="MsoNormal" align="left" style="margin-top: 0; margin-bottom: 0"><b><font size="5" color="#FFFFFF">&nbsp;    
else return DelBFS(T-&gt;rchild.key);</font></b></p>   
<p class="MsoNormal" align="left" style="margin-top: 0; margin-bottom: 0"><b><font size="5" color="#FFFFFF">&nbsp;}</font></b></p>
<p class="MsoNormal" align="left" style="margin-top: 0; margin-bottom: 0"><b><font size="5" color="#FFFFFF">}</font></b></p>
<p class="MsoNormal" align="left" style="margin-top: 0; margin-bottom: 0"> </p>
<p class="MsoNormal" align="left" style="margin-top: 0; margin-bottom: 0"><b><font size="5" color="#FFFFFF">Status    
Delete(BiTree &amp;p)</font></b></p>   
<p class="MsoNormal" align="left" style="margin-top: 0; margin-bottom: 0"><b><font size="5" color="#FFFFFF">{</font></b></p>
<p class="MsoNormal" align="left" style="margin-top: 0; margin-bottom: 0"><b><font size="5" color="#FFFFFF">&nbsp;if(!p-&gt;rchild)</font></b></p>
<p class="MsoNormal" align="left" style="margin-top: 0; margin-bottom: 0"><b><font size="5" color="#FFFFFF">&nbsp;    
{q=p;p=p-&gt;lchild;free(q);}</font></b></p>
<p class="MsoNormal" align="left" style="margin-top: 0; margin-bottom: 0"><b><font size="5" color="#FFFFFF">&nbsp;else    
if(!p-&gt;lcild)</font></b></p>
<p class="MsoNormal" align="left" style="margin-top: 0; margin-bottom: 0"><b><font size="5" color="#FFFFFF">&nbsp;    
{q=p;p=p-&gt;rchild;free(q);}</font></b></p>
<p class="MsoNormal" align="left" style="margin-top: 0; margin-bottom: 0"><b><font size="5" color="#FFFFFF">&nbsp;else</font></b></p>
<p class="MsoNormal" align="left" style="margin-top: 0; margin-bottom: 0"><b><font size="5" color="#FFFFFF">&nbsp;    
{</font></b></p>
<p class="MsoNormal" align="left" style="margin-top: 0; margin-bottom: 0"><b><font size="5" color="#FFFFFF">&nbsp;&nbsp;    
q=p;s=p-&gt;lchild;</font></b></p>
<p class="MsoNormal" align="left" style="margin-top: 0; margin-bottom: 0"><b><font size="5" color="#FFFFFF">&nbsp;&nbsp;    
while(s-&gt;rchild){q=s;s=s-&gt;rchild;}</font></b></p>
<p class="MsoNormal" align="left" style="margin-top: 0; margin-bottom: 0"><b><font size="5" color="#FFFFFF">&nbsp;&nbsp;    
p-&gt;data=s-&gt;data;</font></b></p>
<p class="MsoNormal" align="left" style="margin-top: 0; margin-bottom: 0"><b><font size="5" color="#FFFFFF">&nbsp;&nbsp;    
if(q!=p) q-&gt;rchild=s-&gt;lchild;</font></b></p>   
<p class="MsoNormal" align="left" style="margin-top: 0; margin-bottom: 0"><b><font size="5" color="#FFFFFF">&nbsp;&nbsp;    
else q-&gt;lchild=s-&gt;lchild;</font></b></p>   
<p class="MsoNormal" align="left" style="margin-top: 0; margin-bottom: 0"><b><font size="5" color="#FFFFFF">&nbsp;&nbsp;    
delete s;</font></b></p>   
<p class="MsoNormal" align="left" style="margin-top: 0; margin-bottom: 0"><b><font size="5" color="#FFFFFF">&nbsp;    
}</font></b></p>
<p class="MsoNormal" align="left" style="margin-top: 0; margin-bottom: 0"><b><font size="5" color="#FFFFFF">&nbsp;return    
TRUE;</font></b></p>
<p class="MsoNormal" align="left" style="margin-top: 0; margin-bottom: 0"><b><font size="5" color="#FFFFFF">}</font></b></p>
<p class="MsoNormal" align="left" style="margin-top: 0; margin-bottom: 0"> </p>
<p class="MsoNormal" align="left" style="margin-top: 0; margin-bottom: 0"><span style="mso-spacerun: yes; font-family: 黑体; mso-fareast-font-family: 宋体" lang="EN-US">&nbsp;    
<font size="5" color="#FFFFFF"><b>&nbsp; </b></font></span><font size="5" color="#FFFFFF"><b><span style="font-family:
宋体;mso-ascii-font-family:黑体;mso-hansi-font-family:&quot;Times New Roman&quot;">对给定序列建立</span><span style="font-family:宋体;mso-hansi-font-family:&quot;Times New Roman&quot;">二叉排序树,若左右子树均匀分布,则其查找过程类似于有序表的折半查找。但若给定序列原本有序,则建立的二叉排序树就蜕化为单链表,其查找效率同顺序查找一样。因此,对均匀的二叉排序树进行插入或删除结点后,应对其调整,使其依然保持均匀。</span></b></font></p>
<p class="MsoNormal" align="left" style="margin-top: 0; margin-bottom: 0"> </p>
<p class="MsoNormal" align="left" style="margin-top: 0; margin-bottom: 0"> </p>
<p class="MsoNormal" align="center" style="margin-top: 0; margin-bottom: 0"><b><span style="font-family: 宋体; mso-hansi-font-family: Times New Roman"><a href="ds9.3.HTM"><font size="5" color="#FFFF00">返回</font></a></span><font size="5" color="#FFFFFF"><span lang="EN-US" style="font-family: 宋体; mso-hansi-font-family: Times New Roman"><o:p>
</o:p>
</span></font></b></p>

<!--mstheme--></font>

</body>

</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -