arraylistcompletebinarytree-vectorheap2.html

来自「经典的数据结构源代码(java 实现)」· HTML 代码 · 共 55 行

HTML
55
字号
<html><head><title>Code Fragment</title></head><body text=#000000><center></center><br><br><dl><dd><pre>  <font color = #ff0080>/** Returns whether v is an internal node. */</font>  <font color=#8000a0><font color=#8000a0>public</font> </font><font color=#8000a0>boolean</font> <font color=#0000ff>isInternal</font>(Position&lt;E&gt; v) <font color=#8000a0><font color=#ff8000>throws</font> </font>InvalidPositionException {    <font color=#8000a0><font color=#ff8000>return</font> </font><font color=#0000ff>hasLeft</font>(v);  <font color=#ff0080>// if v has a right child it will have a left child</font>  }  <font color = #ff0080>/** Returns whether v is an external node. */</font>  <font color=#8000a0><font color=#8000a0>public</font> </font><font color=#8000a0>boolean</font> <font color=#0000ff>isExternal</font>(Position&lt;E&gt; v) <font color=#8000a0><font color=#ff8000>throws</font> </font>InvalidPositionException {    <font color=#ff8000>return</font> !<font color=#0000ff>isInternal</font>(v);  }  <font color = #ff0080>/** Returns whether v is the root node. */</font>  <font color=#8000a0><font color=#8000a0>public</font> </font><font color=#8000a0>boolean</font> <font color=#0000ff>isRoot</font>(Position&lt;E&gt; v) <font color=#8000a0><font color=#ff8000>throws</font> </font>InvalidPositionException {     BTPos&lt;E&gt; vv = <font color=#0000ff>checkPosition</font>(v);    <font color=#8000a0><font color=#ff8000>return</font> </font>vv.<font color=#0000ff>index</font>() == 1;  }  <font color = #ff0080>/** Returns whether v has a left child. */</font>  <font color=#8000a0><font color=#8000a0>public</font> </font><font color=#8000a0>boolean</font> <font color=#0000ff>hasLeft</font>(Position&lt;E&gt; v) <font color=#8000a0><font color=#ff8000>throws</font> </font>InvalidPositionException {     BTPos&lt;E&gt; vv = <font color=#0000ff>checkPosition</font>(v);    <font color=#ff8000>return</font> 2*vv.<font color=#0000ff>index</font>() &lt;= <font color=#0000ff>size</font>();  }  <font color = #ff0080>/** Returns whether v has a right child. */</font>  <font color=#8000a0><font color=#8000a0>public</font> </font><font color=#8000a0>boolean</font> <font color=#0000ff>hasRight</font>(Position&lt;E&gt; v) <font color=#8000a0><font color=#ff8000>throws</font> </font>InvalidPositionException {     BTPos&lt;E&gt; vv = <font color=#0000ff>checkPosition</font>(v);    <font color=#ff8000>return</font> 2*vv.<font color=#0000ff>index</font>() + 1 &lt;= <font color=#0000ff>size</font>();  }  <font color = #ff0080>/** Returns the root of the tree. */</font>  <font color=#8000a0><font color=#8000a0>public</font> </font>Position&lt;E&gt; <font color=#0000ff>root</font>() <font color=#8000a0><font color=#ff8000>throws</font> </font>EmptyTreeException {    <font color=#ff8000>if</font><font color=#0000ff> </font>(<font color=#0000ff>isEmpty</font>()) <font color=#8000a0><font color=#ff8000>throw</font> </font><font color=#ff8000>new</font> <font color=#0000ff>EmptyTreeException</font>(<font color=#008000>"Tree is empty"</font>);    <font color=#8000a0><font color=#ff8000>return</font> </font>T.<font color=#0000ff>get</font>(1);  }   <font color = #ff0080>/** Returns the left child of v. */</font>  <font color=#8000a0><font color=#8000a0>public</font> </font>Position&lt;E&gt; <font color=#0000ff>left</font>(Position&lt;E&gt; v)     <font color=#8000a0><font color=#ff8000>throws</font> </font>InvalidPositionException, BoundaryViolationException {     <font color=#ff8000>if</font><font color=#0000ff> </font>(!<font color=#0000ff>hasLeft</font>(v)) <font color=#8000a0><font color=#ff8000>throw</font> </font><font color=#ff8000>new</font> <font color=#0000ff>BoundaryViolationException</font>(<font color=#008000>"No left child"</font>);    BTPos&lt;E&gt; vv = <font color=#0000ff>checkPosition</font>(v);    <font color=#8000a0><font color=#ff8000>return</font> </font>T.<font color=#0000ff>get</font>(2*vv.<font color=#0000ff>index</font>());  }  <font color = #ff0080>/** Returns the right child of v. */</font>   <font color=#8000a0><font color=#8000a0>public</font> </font>Position&lt;E&gt; <font color=#0000ff>right</font>(Position&lt;E&gt; v)     <font color=#8000a0><font color=#ff8000>throws</font> </font>InvalidPositionException {     <font color=#ff8000>if</font><font color=#0000ff> </font>(!<font color=#0000ff>hasRight</font>(v)) <font color=#8000a0><font color=#ff8000>throw</font> </font><font color=#ff8000>new</font> <font color=#0000ff>BoundaryViolationException</font>(<font color=#008000>"No right child"</font>);    BTPos&lt;E&gt; vv = <font color=#0000ff>checkPosition</font>(v);    <font color=#8000a0><font color=#ff8000>return</font> </font>T.<font color=#0000ff>get</font>(2*vv.<font color=#0000ff>index</font>() + 1);  }</dl></body></html>

⌨️ 快捷键说明

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