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

📄 binarysearchtree-binarysearchtree3.html

📁 经典的数据结构源代码(java 实现)
💻 HTML
字号:
<html><head><title>Code Fragment</title></head><body text=#000000><center></center><br><br><dl><dd><pre>  <font color=#ff0080>// methods of the dictionary ADT</font>  <font color=#8000a0><font color=#8000a0>public</font> </font><font color=#8000a0>int</font> <font color=#0000ff>size</font>() { <font color=#8000a0><font color=#ff8000>return</font> </font>numEntries; }  <font color=#8000a0><font color=#8000a0>public</font> </font><font color=#8000a0>boolean</font> <font color=#0000ff>isEmpty</font>() { <font color=#8000a0><font color=#ff8000>return</font> </font><font color=#0000ff>size</font>() == 0; }  <font color=#8000a0><font color=#8000a0>public</font> </font>Entry&lt;K,V&gt; <font color=#0000ff>find</font>(K key) <font color=#8000a0><font color=#ff8000>throws</font> </font>InvalidKeyException {    <font color=#0000ff>checkKey</font>(key);		<font color=#ff0080>// may throw an InvalidKeyException</font>    Position&lt;Entry&lt;K,V&gt;&gt; curPos = <font color=#0000ff>treeSearch</font>(key, <font color=#0000ff>root</font>());    actionPos = curPos;		<font color=#ff0080>// node where the search ended</font>    <font color=#ff8000>if</font><font color=#0000ff> </font>(<font color=#0000ff>isInternal</font>(curPos)) <font color=#8000a0><font color=#ff8000>return</font> </font><font color=#0000ff>entry</font>(curPos);    <font color=#8000a0><font color=#ff8000>return</font> </font>null;  }  <font color=#8000a0><font color=#8000a0>public</font> </font>Iterable&lt;Entry&lt;K,V&gt;&gt; <font color=#0000ff>findAll</font>(K key) <font color=#8000a0><font color=#ff8000>throws</font> </font>InvalidKeyException {    <font color=#0000ff>checkKey</font>(key);		<font color=#ff0080>// may throw an InvalidKeyException</font>    PositionList&lt;Entry&lt;K,V&gt;&gt; L = <font color=#8000a0><font color=#ff8000>new</font> </font>NodePositionList&lt;Entry&lt;K,V&gt;&gt;<font color=#0000ff></font>();    <font color=#0000ff>addAll</font>(L, <font color=#0000ff>root</font>(), key);    <font color=#8000a0><font color=#ff8000>return</font> </font>L;  }  <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 {    <font color=#0000ff>checkKey</font>(k);	<font color=#ff0080>// may throw an InvalidKeyException</font>    Position&lt;Entry&lt;K,V&gt;&gt; insPos = <font color=#0000ff>treeSearch</font>(k, <font color=#0000ff>root</font>());    <font color=#ff8000>while</font><font color=#0000ff> </font>(!<font color=#0000ff>isExternal</font>(insPos))  <font color=#ff0080>// iterative search for insertion position</font>      insPos = <font color=#0000ff>treeSearch</font>(k, <font color=#0000ff>left</font>(insPos));    actionPos = insPos;	<font color=#ff0080>// node where the new entry is being inserted</font>    <font color=#8000a0><font color=#ff8000>return</font> </font><font color=#0000ff>insertAtExternal</font>(insPos, <font color=#8000a0><font color=#ff8000>new</font> </font>BSTEntry&lt;K,V&gt;<font color=#0000ff></font>(k, x, insPos));  }  <font color=#8000a0><font color=#8000a0>public</font> </font>Entry&lt;K,V&gt; <font color=#0000ff>remove</font>(Entry&lt;K,V&gt; ent) <font color=#8000a0><font color=#ff8000>throws</font> </font>InvalidEntryException  {    <font color=#0000ff>checkEntry</font>(ent);            <font color=#ff0080>// may throw an InvalidEntryException</font>    Position&lt;Entry&lt;K,V&gt;&gt; remPos =<font color=#0000ff> </font>(<font color=#0000ff></font>(BSTEntry&lt;K,V&gt;) ent).<font color=#0000ff>position</font>();     Entry&lt;K,V&gt; toReturn = <font color=#0000ff>entry</font>(remPos);	<font color=#ff0080>// entry to be returned</font>    <font color=#ff8000>if</font><font color=#0000ff> </font>(<font color=#0000ff>isExternal</font>(<font color=#0000ff>left</font>(remPos))) remPos = <font color=#0000ff>left</font>(remPos);  <font color=#ff0080>// left easy case</font>    <font color=#8000a0><font color=#ff8000>else</font> </font><font color=#ff8000>if</font><font color=#0000ff> </font>(<font color=#0000ff>isExternal</font>(<font color=#0000ff>right</font>(remPos))) remPos = <font color=#0000ff>right</font>(remPos); <font color=#ff0080>// right easy case</font>    <font color=#ff8000>else</font> {			<font color=#ff0080>//  entry is at a node with internal children</font>      Position&lt;Entry&lt;K,V&gt;&gt; swapPos = remPos;	<font color=#ff0080>// find node for moving entry</font>      remPos = <font color=#0000ff>right</font>(swapPos);      <font color=#ff8000>do</font>	remPos = <font color=#0000ff>left</font>(remPos);      <font color=#ff8000>while</font><font color=#0000ff> </font>(<font color=#0000ff>isInternal</font>(remPos));      <font color=#0000ff>replaceEntry</font>(swapPos,<font color=#0000ff> </font>(Entry&lt;K,V&gt;) <font color=#0000ff>parent</font>(remPos).<font color=#0000ff>element</font>());    }    actionPos = <font color=#0000ff>sibling</font>(remPos);	<font color=#ff0080>// sibling of the leaf to be removed</font>    <font color=#0000ff>removeExternal</font>(remPos);    <font color=#8000a0><font color=#ff8000>return</font> </font>toReturn;  }} 	<font color=#ff0080>// entries() method is omitted here</font></dl></body></html>

⌨️ 快捷键说明

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