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

📄 rbtree-insertitem.html

📁 经典的数据结构源代码(java 实现)
💻 HTML
字号:
<html><head><title>Code Fragment</title></head><body text=#000000><center></center><br><br><dl><dd><pre>  <font color = #ff0080>/** Creates a new tree node. */</font>  <font color=#8000a0><font color=#8000a0>protected</font> </font>BTPosition&lt;Entry&lt;K,V&gt;&gt; <font color=#0000ff>createNode</font>(Entry&lt;K,V&gt; element,       BTPosition&lt;Entry&lt;K,V&gt;&gt; parent, BTPosition&lt;Entry&lt;K,V&gt;&gt; left,       BTPosition&lt;Entry&lt;K,V&gt;&gt; right) {    <font color=#8000a0><font color=#ff8000>return</font> </font><font color=#ff8000>new</font> RBNode&lt;K,V&gt;<font color=#0000ff></font>(element,parent,left,right); <font color=#ff0080>// a red-black node</font>  }  <font color=#8000a0><font color=#8000a0>public</font> </font>Entry&lt;K,V&gt; <font color=#0000ff>insert</font>(K k, <font color=#8000a0>V </font>x) <font color=#8000a0><font color=#ff8000>throws</font> </font>InvalidKeyException  {    Entry&lt;K,V&gt; toReturn = <font color=#ff8000>super</font>.<font color=#0000ff>insert</font>(k, x);     Position&lt;Entry&lt;K,V&gt;&gt; posZ = actionPos; <font color=#ff0080>// start at the insertion position</font>    <font color=#0000ff>setRed</font>(posZ);    <font color=#ff8000>if</font><font color=#0000ff> </font>(<font color=#0000ff>isRoot</font>(posZ))      <font color=#0000ff>setBlack</font>(posZ);    <font color=#ff8000>else</font>      <font color=#0000ff>remedyDoubleRed</font>(posZ); <font color=#ff0080>// fix a double-red color violation </font>    <font color=#8000a0><font color=#ff8000>return</font> </font>toReturn;  }  <font color=#8000a0><font color=#8000a0>protected</font> </font><font color=#8000a0>void</font> <font color=#0000ff>remedyDoubleRed</font>(Position&lt;Entry&lt;K,V&gt;&gt; posZ)  {    Position&lt;Entry&lt;K,V&gt;&gt; posV = <font color=#0000ff>parent</font>(posZ);    <font color=#ff8000>if</font><font color=#0000ff> </font>(<font color=#0000ff>isRoot</font>(posV))      <font color=#ff8000>return</font>;    <font color=#ff8000>if</font><font color=#0000ff> </font>(!<font color=#0000ff>isPosRed</font>(posV))      <font color=#ff8000>return</font>;    <font color=#ff0080>// we have a double red: posZ and posV</font>    <font color=#ff8000>if</font><font color=#0000ff> </font>(!<font color=#0000ff>isPosRed</font>(<font color=#0000ff>sibling</font>(posV)))  { <font color=#ff0080>// Case 1: trinode restructuring</font>      posV = <font color=#0000ff>restructure</font>(posZ);      <font color=#0000ff>setBlack</font>(posV);      <font color=#0000ff>setRed</font>(<font color=#0000ff>left</font>(posV));      <font color=#0000ff>setRed</font>(<font color=#0000ff>right</font>(posV));    }      <font color=#ff8000>else</font>  { <font color=#ff0080>// Case 2: recoloring</font>      <font color=#0000ff>setBlack</font>(posV);      <font color=#0000ff>setBlack</font>(<font color=#0000ff>sibling</font>(posV));      Position&lt;Entry&lt;K,V&gt;&gt; posU = <font color=#0000ff>parent</font>(posV);      <font color=#ff8000>if</font><font color=#0000ff> </font>(<font color=#0000ff>isRoot</font>(posU))        <font color=#ff8000>return</font>;      <font color=#0000ff>setRed</font>(posU);      <font color=#0000ff>remedyDoubleRed</font>(posU);    }  }</dl></body></html>

⌨️ 快捷键说明

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