schmitzm.lang.tree
Class BinaryTreeNode<E>

java.lang.Object
  extended by schmitzm.lang.tree.TreeNode<E>
      extended by schmitzm.lang.tree.BinaryTreeNode<E>
Direct Known Subclasses:
FeatureOperationTree.AttributeIndexReferenceNode, FeatureOperationTree.AttributeNameReferenceNode, OperationTree.ConstantAliasNode, OperationTree.ConstantNode, OperationTree.OperatorNode, RasterOperationTree.RasterReferenceNode

public class BinaryTreeNode<E>
extends TreeNode<E>

Diese Klasse stellt einen Knoten in einem Baum dar, der maximal 2 Kindknoten hat, einen linken und einen rechten.

Version:
1.0
Author:
Martin Schmitz (University of Bonn/Germany)

Field Summary
protected  BinaryTreeNode<E> leftChild
          Speichert das linke Kind des Knoten.
protected  BinaryTreeNode<E> rightChild
          Speichert das rechte Kind des Knoten.
 
Fields inherited from class schmitzm.lang.tree.TreeNode
object, parent
 
Constructor Summary
BinaryTreeNode()
          Erzeugt einen Wurzel-Knoten ohne Nachfolger.
BinaryTreeNode(BinaryTreeNode<E> parent)
          Erzeugt einen Blatt-Knoten.
BinaryTreeNode(E object)
          Erzeugt einen Wurzel-Knoten ohne Nachfolger.
BinaryTreeNode(E object, BinaryTreeNode<E> parent)
          Erzeugt einen Blatt-Knoten.
BinaryTreeNode(E object, BinaryTreeNode<E> parent, BinaryTreeNode<E> leftChild, BinaryTreeNode<E> rightChild)
          Erzeugt einen inneren Knoten.
 
Method Summary
 void checkNode(TreeNode<E> node)
          Prueft, ob ein Knoten als Vater- oder Kind-Knoten fuer diesen Knoten verwendet werden kann
 BinaryTreeNode<E> getChild(int i)
          Liefert einen Kindknoten.
 int getChildCount()
          Liefert die (maximale) Anzahl der Kindknoten.
 BinaryTreeNode<E> getLeftChild()
          Liefert den linken Kindknoten.
 Vector<E> getObjectsInorder(Vector<E> v)
          Liefert die im (Teil-)Baum des Knotens gespeicherten Objekte in der Inorder-Reihenfolge.
 Vector<E> getObjectsPostorder(Vector<E> v)
          Liefert die im (Teil-)Baum des Knotens gespeicherten Objekte in der Postorder-Reihenfolge.
 Vector<E> getObjectsPreorder(Vector<E> v)
          Liefert die im (Teil-)Baum des Knotens gespeicherten Objekte in der Preorder-Reihenfolge.
 BinaryTreeNode<E> getParent()
          Liefert den direkten Vorgaenger-Knoten.
 BinaryTreeNode<E> getRightChild()
          Liefert den rechten Kindknoten.
 BinaryTreeNode<E> getRoot()
          Liefert den Wurzel-Knoten.
 boolean isLeaf()
          Prueft, ob es sich um einen Blattknoten handelt.
 void setChild(int i, TreeNode<E> child)
          Setzt einen Kindknoten.
 void setLeftChild(BinaryTreeNode<E> child)
          Setzt den linken Kindknoten.
 void setRightChild(BinaryTreeNode<E> child)
          Setzt den rechten Kindknoten.
 
Methods inherited from class schmitzm.lang.tree.TreeNode
getObject, isInnerNode, isRoot, setObject, setParent
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

leftChild

protected BinaryTreeNode<E> leftChild
Speichert das linke Kind des Knoten.


rightChild

protected BinaryTreeNode<E> rightChild
Speichert das rechte Kind des Knoten.

Constructor Detail

BinaryTreeNode

public BinaryTreeNode()
Erzeugt einen Wurzel-Knoten ohne Nachfolger.


BinaryTreeNode

public BinaryTreeNode(E object)
Erzeugt einen Wurzel-Knoten ohne Nachfolger.

Parameters:
object - Objekt, das in dem Knoten gespeichert wird

BinaryTreeNode

public BinaryTreeNode(BinaryTreeNode<E> parent)
Erzeugt einen Blatt-Knoten.

Parameters:
parent - direkter Vorgaenger-Knoten

BinaryTreeNode

public BinaryTreeNode(E object,
                      BinaryTreeNode<E> parent)
Erzeugt einen Blatt-Knoten.

Parameters:
object - Objekt, das in dem Knoten gespeichert wird
parent - direkter Vorgaenger-Knoten

BinaryTreeNode

public BinaryTreeNode(E object,
                      BinaryTreeNode<E> parent,
                      BinaryTreeNode<E> leftChild,
                      BinaryTreeNode<E> rightChild)
Erzeugt einen inneren Knoten.

Parameters:
object - Objekt, das in dem Knoten gespeichert wird
parent - direkter Vorgaenger-Knoten
Method Detail

getRoot

public BinaryTreeNode<E> getRoot()
Liefert den Wurzel-Knoten.

Overrides:
getRoot in class TreeNode<E>

getParent

public BinaryTreeNode<E> getParent()
Liefert den direkten Vorgaenger-Knoten.

Overrides:
getParent in class TreeNode<E>

isLeaf

public boolean isLeaf()
Prueft, ob es sich um einen Blattknoten handelt.

Overrides:
isLeaf in class TreeNode<E>
Returns:
true gdw. beide Kinder null sind

checkNode

public void checkNode(TreeNode<E> node)
Prueft, ob ein Knoten als Vater- oder Kind-Knoten fuer diesen Knoten verwendet werden kann

Specified by:
checkNode in class TreeNode<E>
Parameters:
node - zu pruefende Knoten
Throws:
IllegalArgumentException - falls der Knoten nicht geeignet ist

getChildCount

public int getChildCount()
Liefert die (maximale) Anzahl der Kindknoten.

Specified by:
getChildCount in class TreeNode<E>
Returns:
immer 2, unabhaengig davon, ob diese null sind oder nicht

getChild

public BinaryTreeNode<E> getChild(int i)
Liefert einen Kindknoten.

Specified by:
getChild in class TreeNode<E>
Parameters:
i - Index (beginnend bei 0)
Returns:
den linken Knoten fuer i = 1, den rechten Knoten sonst

setChild

public void setChild(int i,
                     TreeNode<E> child)
Setzt einen Kindknoten. Setzt den linken Kind-Knoten fuer i = 1, den rechten Kind-Knoten sonst

Specified by:
setChild in class TreeNode<E>
Parameters:
i - Index (beginnend bei 0)
child - ein Kindknoten
Throws:
IllegalArgumentException - falls child kein BinaryTreeNode<E> ist

getLeftChild

public BinaryTreeNode<E> getLeftChild()
Liefert den linken Kindknoten.


setLeftChild

public void setLeftChild(BinaryTreeNode<E> child)
Setzt den linken Kindknoten.


getRightChild

public BinaryTreeNode<E> getRightChild()
Liefert den rechten Kindknoten.


setRightChild

public void setRightChild(BinaryTreeNode<E> child)
Setzt den rechten Kindknoten.


getObjectsInorder

public Vector<E> getObjectsInorder(Vector<E> v)
Liefert die im (Teil-)Baum des Knotens gespeicherten Objekte in der Inorder-Reihenfolge.

Parameters:
v - Liste in die die Objekte eingefuegt werden (kann null sein!)

getObjectsPreorder

public Vector<E> getObjectsPreorder(Vector<E> v)
Liefert die im (Teil-)Baum des Knotens gespeicherten Objekte in der Preorder-Reihenfolge.

Parameters:
v - Liste in die die Objekte eingefuegt werden (kann null sein!)

getObjectsPostorder

public Vector<E> getObjectsPostorder(Vector<E> v)
Liefert die im (Teil-)Baum des Knotens gespeicherten Objekte in der Postorder-Reihenfolge.

Parameters:
v - Liste in die die Objekte eingefuegt werden (kann null sein!)