linkedbinarytree-linkedbinarytree.html
来自「经典的数据结构源代码(java 实现)」· HTML 代码 · 共 58 行
HTML
58 行
<html><head><title>Code Fragment</title></head><body text=#000000><center></center><br><br><dl><dd><pre><font color=#ff0080>/** * An implementation of the BinaryTree interface by means of a linked structure. */</font><font color=#8000a0>public</font> <font color=#8000a0><font color=#ff8000>class</font> </font>LinkedBinaryTree<E> <font color=#8000a0><font color=#ff8000>implements</font> </font>BinaryTree<E> { <font color=#8000a0><font color=#8000a0>protected</font> </font>BTPosition<E> root; <font color=#ff0080>// reference to the root</font> <font color=#8000a0><font color=#8000a0>protected</font> </font><font color=#8000a0>int</font> size; <font color=#ff0080>// number of nodes</font> <font color = #ff0080>/** Creates an empty binary tree. */</font> <font color=#8000a0><font color=#8000a0>public</font> </font><font color=#0000ff>LinkedBinaryTree</font>() { root = null; <font color=#ff0080>// start with an empty tree</font> size = 0; } <font color = #ff0080>/** Returns the number of nodes in the tree. */</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>size; } <font color = #ff0080>/** Returns whether a node is internal. */</font> <font color=#8000a0><font color=#8000a0>public</font> </font><font color=#8000a0>boolean</font> <font color=#0000ff>isInternal</font>(Position<E> v) <font color=#8000a0><font color=#ff8000>throws</font> </font>InvalidPositionException { <font color=#0000ff>checkPosition</font>(v); <font color=#ff0080>// auxiliary method</font> <font color=#ff8000>return</font><font color=#0000ff> </font>(<font color=#0000ff>hasLeft</font>(v) || <font color=#0000ff>hasRight</font>(v)); } <font color = #ff0080>/** Returns whether a node is the root. */</font> <font color=#8000a0><font color=#8000a0>public</font> </font><font color=#8000a0>boolean</font> <font color=#0000ff>isRoot</font>(Position<E> v) <font color=#8000a0><font color=#ff8000>throws</font> </font>InvalidPositionException { <font color=#0000ff>checkPosition</font>(v); <font color=#ff8000>return</font><font color=#0000ff> </font>(v == <font color=#0000ff>root</font>()); } <font color = #ff0080>/** Returns whether a node 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<E> v) <font color=#8000a0><font color=#ff8000>throws</font> </font>InvalidPositionException { BTPosition<E> vv = <font color=#0000ff>checkPosition</font>(v); <font color=#ff8000>return</font><font color=#0000ff> </font>(vv.<font color=#0000ff>getLeft</font>() != null); } <font color = #ff0080>/** Returns the root of the tree. */</font> <font color=#8000a0><font color=#8000a0>public</font> </font>Position<E> <font color=#0000ff>root</font>() <font color=#8000a0><font color=#ff8000>throws</font> </font>EmptyTreeException { <font color=#ff8000>if</font><font color=#0000ff> </font>(root == null) <font color=#8000a0><font color=#ff8000>throw</font> </font><font color=#ff8000>new</font> <font color=#0000ff>EmptyTreeException</font>(<font color=#008000>"The tree is empty"</font>); <font color=#8000a0><font color=#ff8000>return</font> </font>root; } <font color = #ff0080>/** Returns the left child of a node. */</font> <font color=#8000a0><font color=#8000a0>public</font> </font>Position<E> <font color=#0000ff>left</font>(Position<E> v) <font color=#8000a0><font color=#ff8000>throws</font> </font>InvalidPositionException, BoundaryViolationException { BTPosition<E> vv = <font color=#0000ff>checkPosition</font>(v); Position<E> leftPos = vv.<font color=#0000ff>getLeft</font>(); <font color=#ff8000>if</font><font color=#0000ff> </font>(leftPos == null) <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>); <font color=#8000a0><font color=#ff8000>return</font> </font>leftPos; }</dl></body></html>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?