edu.colorado.nodes
Class BooleanBTNode

java.lang.Object
  extended by edu.colorado.nodes.BooleanBTNode

public class BooleanBTNode
extends java.lang.Object

A BooleanBTNode provides a node for a binary tree. Each node contains a piece of data (which is a reference to an object) and references to a left and right child. The references to children may be null to indicate that there is no child. The reference stored in a node can also be null.

Limitations:
Beyond Int.MAX_VALUE elements, treeSize, is wrong.
Java Source Code for this class:
http://www.cs.colorado.edu/~main/edu/colorado/nodes/BooleanBTNode.java

See Also:
BTNode, ByteBTNode, CharBTNode, DoubleBTNode, FloatBTNode, IntBTNode, LongBTNode, ShortBTNode

Constructor Summary
BooleanBTNode(boolean initialData, BooleanBTNode initialLeft, BooleanBTNode initialRight)
          Initialize a BooleanBTNode with a specified initial data and links children.
 
Method Summary
 boolean getData()
          Accessor method to get the data from this node.
 BooleanBTNode getLeft()
          Accessor method to get a reference to the left child of this node.
 boolean getLeftmostData()
          Accessor method to get the data from the leftmost node of the tree below this node.
 BooleanBTNode getRight()
          Accessor method to get a reference to the right child of this node.
 boolean getRightmostData()
          Accessor method to get the data from the rightmost node of the tree below this node.
 void inorderPrint()
          Uses an inorder traversal to print the data from each node at or below this node of the binary tree.
 boolean isLeaf()
          Accessor method to determine whether a node is a leaf.
 void postorderPrint()
          Uses a postorder traversal to print the data from each node at or below this node of the binary tree.
 void preorderPrint()
          Uses a preorder traversal to print the data from each node at or below this node of the binary tree.
 void print(int depth)
          Uses an inorder traversal to print the data from each node at or below this node of the binary tree, with indentations to indicate the depth of each node.
 BooleanBTNode removeLeftmost()
          Remove the leftmost most node of the tree below this node.
 BooleanBTNode removeRightmost()
          Remove the rightmost most node of the tree below this node.
 void setData(boolean newData)
          Modification method to set the data in this node.
 void setLeft(BooleanBTNode newLeft)
          Modification method to set the link to the left child of this node.
 void setRight(BooleanBTNode newRight)
          Modification method to set the link to the right child of this node.
static BooleanBTNode treeCopy(BooleanBTNode source)
          Copy a binary tree.
static int treeSize(BooleanBTNode root)
          Count the number of nodes in a binary tree.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

BooleanBTNode

public BooleanBTNode(boolean initialData,
                     BooleanBTNode initialLeft,
                     BooleanBTNode initialRight)
Initialize a BooleanBTNode with a specified initial data and links children. Note that a child link may be the null reference, which indicates that the new node does not have that child.

Parameters:
initialData - the initial data of this new node
initialLeft - a reference to the left child of this new node--this reference may be null to indicate that there is no node after this new node.
initialRight - a reference to the right child of this new node--this reference may be null to indicate that there is no node after this new node.
Postcondition:
This node contains the specified data and links to its children.
Method Detail

getData

public boolean getData()
Accessor method to get the data from this node.

Parameters:
- - none
Returns:
the data from this node

getLeft

public BooleanBTNode getLeft()
Accessor method to get a reference to the left child of this node.

Parameters:
- - none
Returns:
a reference to the left child of this node (or the null reference if there is no left child)

getLeftmostData

public boolean getLeftmostData()
Accessor method to get the data from the leftmost node of the tree below this node.

Parameters:
- - none
Returns:
the data from the deepest node that can be reached from this node by following left links.

getRightmostData

public boolean getRightmostData()
Accessor method to get the data from the rightmost node of the tree below this node.

Parameters:
- - none
Returns:
the data from the deepest node that can be reached from this node by following right links.

getRight

public BooleanBTNode getRight()
Accessor method to get a reference to the right child of this node.

Parameters:
- - none
Returns:
a reference to the right child of this node (or the null reference if there is no right child)

inorderPrint

public void inorderPrint()
Uses an inorder traversal to print the data from each node at or below this node of the binary tree.

Parameters:
- - none
Postcondition:
The data of this node and all its descendants have been writeen by System.out.println( ) using an inorder traversal.

isLeaf

public boolean isLeaf()
Accessor method to determine whether a node is a leaf.

Parameters:
- - none
Returns:
true (if this node is a leaf) or false (if this node is not a leaf.

preorderPrint

public void preorderPrint()
Uses a preorder traversal to print the data from each node at or below this node of the binary tree.

Parameters:
- - none
Postcondition:
The data of this node and all its descendants have been writeen by System.out.println( ) using a preorder traversal.

postorderPrint

public void postorderPrint()
Uses a postorder traversal to print the data from each node at or below this node of the binary tree.

Parameters:
- - none
Postcondition:
The data of this node and all its descendants have been writeen by System.out.println( ) using a postorder traversal.

print

public void print(int depth)
Uses an inorder traversal to print the data from each node at or below this node of the binary tree, with indentations to indicate the depth of each node.

Parameters:
depth - the depth of this node (with 0 for root, 1 for the root's children, and so on)(
Precondition:
depth is the depth of this node.
Postcondition:
The data of this node and all its descendants have been writeen by System.out.println( ) using an inorder traversal. The indentation of each line of data is four times its depth in the tree. A dash "--" is printed at any place where a child has no sibling.

removeLeftmost

public BooleanBTNode removeLeftmost()
Remove the leftmost most node of the tree below this node.

Parameters:
- - none
Postcondition:
The tree starting at this node has had its leftmost node removed (i.e., the deepest node that can be reached by following left links). The return value is a reference to the root of the new (smaller) tree. This return value could be null if the original tree had only one node (since that one node has now been removed).

removeRightmost

public BooleanBTNode removeRightmost()
Remove the rightmost most node of the tree below this node.

Parameters:
- - none
Postcondition:
The tree starting at this node has had its rightmost node removed (i.e., the deepest node that can be reached by following right links). The return value is a reference to the root of the new (smaller) tree. This return value could be null if the original tree had only one node (since that one node has now been removed).

setData

public void setData(boolean newData)
Modification method to set the data in this node.

Parameters:
newData - the new data to place in this node
Postcondition:
The data of this node has been set to newData.

setLeft

public void setLeft(BooleanBTNode newLeft)
Modification method to set the link to the left child of this node.

Parameters:
newLeft - a reference to the node that should appear as the left child of this node (or the null reference if there is no left child for this node)
Postcondition:
The link to the left child of this node has been set to newLeft. Any other node (that used to be the left child) is no longer connected to this node.

setRight

public void setRight(BooleanBTNode newRight)
Modification method to set the link to the right child of this node.

Parameters:
newLeft - a reference to the node that should appear as the right child of this node (or the null reference if there is no right child for this node)
Postcondition:
The link to the right child of this node has been set to newRight. Any other node (that used to be the right child) is no longer connected to this node.

treeCopy

public static BooleanBTNode treeCopy(BooleanBTNode source)
Copy a binary tree.

Parameters:
source - a reference to the root of a binary tree that will be copied (which may be an empty tree where source is null)
Returns:
The method has made a copy of the binary tree starting at source. The return value is a reference to the root of the copy.
Throws:
java.lang.OutOfMemoryError - Indicates that there is insufficient memory for the new tree.

treeSize

public static int treeSize(BooleanBTNode root)
Count the number of nodes in a binary tree.

Parameters:
root - a reference to the root of a binary tree (which may be an empty tree where source is null)
Returns:
the number of nodes in the binary tree
Note:
A wrong answer occurs for trees larger than INT.MAX_VALUE.