forked from Dennis-ty/cs110ProjectC
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathBinaryNode.java
91 lines (71 loc) · 1.66 KB
/
BinaryNode.java
1
class BinaryNode<T> { private T data; private BinaryNode<T> leftChild; private BinaryNode<T> rightChild; public BinaryNode(T data) { this(data, null, null); } public BinaryNode(T data, BinaryNode<T> leftChild, BinaryNode<T> rightChild) { this.data = data; this.leftChild = leftChild; this.rightChild = rightChild; } public T getData() { return data; } public void setData(T newData) { data = newData; } public BinaryNode<T> getLeftChild() { return leftChild; } public void setLeftChild(BinaryNode<T> leftChild) { this.leftChild = leftChild; } public boolean hasLeftChild() { return leftChild != null; } public BinaryNode<T> getRightChild() { return rightChild; } public void setRightChild(BinaryNode<T> rightChild) { this.rightChild = rightChild; } public boolean hasRightChild() { return rightChild != null; } public boolean isLeaf() { return !hasLeftChild() && !hasRightChild(); // or: return (leftChild == null) && (rightChild == null); } public int getNumberOfNodes() { if(isLeaf()) { return 1; } int leftNumber = 0; int rightNumber = 0; if (leftChild != null) { leftNumber = leftChild.getNumberOfNodes(); } if (rightChild != null) { rightNumber = rightChild.getNumberOfNodes(); } return 1 + leftNumber + rightNumber; } /* assumes a 1-node tree has a height of 1 */ public int getHeight() { return getHeight(this); } private int getHeight(BinaryNode<T> node) { if(node==null) { return 0; } else if(node.isLeaf()) { return 1; } else { return 1 + Math.max( getHeight(node.getLeftChild()), getHeight(node.getRightChild()) ); } } }