Package components.binarytree
Class BinaryTree1<T>
java.lang.Object
components.binarytree.BinaryTreeSecondary<T>
components.binarytree.BinaryTree1<T>
- Type Parameters:
T- type ofBinaryTreelabels
- All Implemented Interfaces:
BinaryTree<T>,BinaryTreeKernel<T>,Standard<BinaryTree<T>>,Iterable<T>
BinaryTree represented as a recursive data structure, done
"bare-handed", with implementations of primary methods.
Execution-time performance of all methods implemented in this class is O(1).
- Mathematical Subtypes:
TREE_REP is ( size: integer, height: integer, rootLabel: T, leftSubtree: TREE_REP, rightSubtree: TREE_REP )- Mathematical Definitions:
IS_LEGAL_REP ( tr: TREE_REP ): boolean is 0 <= tr.height <= tr.size <= (2^tr.height - 1) and (if tr.size > 0 then tr.size = 1 + tr.leftSubtree.size + tr.rightSubtree.size and tr.height = 1 + max(tr.leftSubtree.height, tr.rightSubtree.height) and [tr.rootLabel is not null] and [tr.leftSubtree is not null] and [tr.rightSubtree is not null] and [tr.leftSubtree and tr.rightSubtree are not aliases] and IS_LEGAL_REP(tr.leftSubtree) and IS_LEGAL_REP(tr.rightSubtree)) ABSTRACT_TREE ( tr: TREE_REP ): binary tree of T satisfies if IS_LEGAL_REP(tr) then (if tr.size = 0 then ABSTRACT_TREE(tr) = empty_tree else ABSTRACT_TREE(tr) = compose(tr.rootLabel, ABSTRACT_TREE(tr.leftSubtree), ABSTRACT_TREE(tr.rightSubtree)))- Representation Invariant (concrete invariant of $this):
IS_LEGAL_REP($this)- Abstraction Relation (interpretation mapping between $this and this):
this = ABSTRACT_TREE($this)
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionfinal voidassemble(T root, BinaryTree<T> left, BinaryTree<T> right) Assembles inthisa tree with root labelrootand subtreesleftandright; the declaration notwithstanding, the dynamic type ofleftandrightmust be the same as the dynamic type ofthis.final voidclear()Resetsthisto an initial value.final Tdisassemble(BinaryTree<T> left, BinaryTree<T> right) Disassemblesthisinto its root label, which is returned as the value of the function, and subtreesleftandright; the declaration notwithstanding, the dynamic type ofleftandrightmust be the same as the dynamic type ofthis.final intheight()Reports the height ofthis.iterator()final BinaryTree<T>Returns a new object with the same dynamic type asthis, having an initial value.final TreplaceRoot(T x) Replaces the root ofthiswithx, and returns the old root.final Troot()Reports the root ofthis.final intsize()Reports the size ofthis.final voidtransferFrom(BinaryTree<T> source) Setsthisto the incoming value ofsource, and resetssourceto an initial value; the declaration notwithstanding, the dynamic type ofsourcemust be the same as the dynamic type ofthis.Methods inherited from class components.binarytree.BinaryTreeSecondary
equals, hashCode, inOrderAssemble, toStringMethods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, waitMethods inherited from interface java.lang.Iterable
forEach, spliterator
-
Constructor Details
-
BinaryTree1
public BinaryTree1()No-argument constructor.
-
-
Method Details
-
newInstance
Description copied from interface:StandardReturns a new object with the same dynamic type asthis, having an initial value. If the typeThas a no-argument constructor, then the value of the new returned object satisfies the contract of the no-argument constructor forT. IfTdoes not have a no-argument constructor, then the value of the new returned object satisfies the contract of the constructor call that was used to initializethis.- Returns:
- new object "like"
thiswith an initial value
-
clear
Description copied from interface:StandardResetsthisto an initial value. If the typeThas a no-argument constructor, thenthissatisfies the contract of the no-argument constructor forT. IfTdoes not have a no-argument constructor, thenthissatisfies the contract of the constructor call that was used to initialize#this. -
transferFrom
Description copied from interface:StandardSetsthisto the incoming value ofsource, and resetssourceto an initial value; the declaration notwithstanding, the dynamic type ofsourcemust be the same as the dynamic type ofthis. If the typeThas a no-argument constructor, thensourcesatisfies the contract of the no-argument constructor forT. IfTdoes not have a no-argument constructor, thensourcesatisfies the contract of the constructor call that was used to initialize#source.- Parameters:
source- object whose value is to be transferred
-
assemble
Description copied from interface:BinaryTreeKernelAssembles inthisa tree with root labelrootand subtreesleftandright; the declaration notwithstanding, the dynamic type ofleftandrightmust be the same as the dynamic type ofthis.- Parameters:
root- the root labelleft- the left subtreeright- the right subtree
-
disassemble
Description copied from interface:BinaryTreeKernelDisassemblesthisinto its root label, which is returned as the value of the function, and subtreesleftandright; the declaration notwithstanding, the dynamic type ofleftandrightmust be the same as the dynamic type ofthis.- Parameters:
left- the left subtreeright- the right subtree- Returns:
- the root label
-
size
Description copied from interface:BinaryTreeKernelReports the size ofthis.- Returns:
- the size
-
iterator
-
root
Description copied from interface:BinaryTreeReports the root ofthis.- Specified by:
rootin interfaceBinaryTree<T>- Overrides:
rootin classBinaryTreeSecondary<T>- Returns:
- the root entry of
this
-
replaceRoot
Description copied from interface:BinaryTreeReplaces the root ofthiswithx, and returns the old root.- Specified by:
replaceRootin interfaceBinaryTree<T>- Overrides:
replaceRootin classBinaryTreeSecondary<T>- Parameters:
x- the new root- Returns:
- the old root
-
height
Description copied from interface:BinaryTreeReports the height ofthis.- Specified by:
heightin interfaceBinaryTree<T>- Overrides:
heightin classBinaryTreeSecondary<T>- Returns:
- the height
-