diff options
| author | Alexander Pickering <alexandermpickering@gmail.com> | 2017-02-06 11:41:36 -0500 |
|---|---|---|
| committer | Alexander Pickering <alexandermpickering@gmail.com> | 2017-02-06 11:41:36 -0500 |
| commit | 89cdf3efb49335e7c07a68a5a64657eeec2288a6 (patch) | |
| tree | cdc0fd8165e65b1637fa54cac11c932acefc8a89 /labs/lab10_tree/BinaryNode.java | |
| download | coe0445-master.tar.gz coe0445-master.tar.bz2 coe0445-master.zip | |
Diffstat (limited to 'labs/lab10_tree/BinaryNode.java')
| -rw-r--r-- | labs/lab10_tree/BinaryNode.java | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/labs/lab10_tree/BinaryNode.java b/labs/lab10_tree/BinaryNode.java new file mode 100644 index 0000000..d498b8e --- /dev/null +++ b/labs/lab10_tree/BinaryNode.java @@ -0,0 +1,100 @@ + +public class BinaryNode<T> implements BinaryNodeInterface<T> +{ + private T data; + private BinaryNode<T> left; + private BinaryNode<T> right; + + public BinaryNode(T dataPortion, BinaryNode<T> leftChild, BinaryNode<T> rightChild) + { + data = dataPortion; + left = leftChild; + right = rightChild; + } + + public BinaryNode(T dataPortion) + { + this(dataPortion, null, null); + } + + public BinaryNode() + { + this(null); + } + + public T getData() + { + return data; + } + + public void setData(T newData) + { + data = newData; + } + + public BinaryNodeInterface<T> getLeftChild() + { + return left; + } + + public BinaryNodeInterface<T> getRightChild() + { + return right; + } + + public void setLeftChild(BinaryNodeInterface<T> leftChild) + { + left = (BinaryNode<T>) leftChild; + } + + public void setRightChild(BinaryNodeInterface<T> rightChild) + { + right = (BinaryNode<T>) rightChild; + } + + public boolean hasLeftChild() + { + return left != null; + } + + public boolean hasRightChild() + { + return right != null; + } + + public boolean isLeaf() + { + return left == null && right == null; + } + + public int getNumberOfNodes() + { + int leftNumber = 0; + int rightNumber = 0; + + if(left != null) + leftNumber = left.getNumberOfNodes(); + + if(right != null) + rightNumber = right.getNumberOfNodes(); + + return 1 + leftNumber + rightNumber; + } + + public int getHeight() + { + return getHeight(this); + } + + private int getHeight(BinaryNode<T> node) + { + int height = 0; + + if(node != null) + { + height = 1 + Math.max(getHeight(node.left), getHeight(node.right)); + } + + return height; + } +} |
