Need Help Finishing this Code: public class BinaryTree <E extends Comparable<? s
ID: 3693740 • Letter: N
Question
Need Help Finishing this Code:
public class BinaryTree <E extends Comparable<? super E>>
private class BinaryNode
private E value;
private BinaryNode right;
private BinaryNode left;
public BinaryNode(E valueIn) {
value = valueIn;
}
private int size = 0;
private BinaryNode root = null;
private boolean addToParent(BinaryNode parentNode, BinaryNode addNode)
int compare = parentNode.value.compareTo(addNode.value);
boolean wasAdded = false;
if (compare > 0) {
// if parent has no left node, add new node as left
if (parentNode.left == null) {
parentNode.left = __________;
wasAdded = true;
} else
{
// otherwise, add to parentNode's left (recursive)
wasAdded = addToParent(parentNode.__________, addNode);
}
}
else if (compare < 0) {
// if parent has no right node, add new node as right
if (parentNode.right == null) {
parentNode.__________ = addNode;
wasAdded = true;
} else
{
// otherwise, add to parentNode's right (recursive)
wasAdded = addToParent(parentNode.__________, addNode);
}
}
return wasAdded;
public boolean add(E value) {
}
BinaryNode node = new BinaryNode(value);
boolean wasAdded = true;
if (root == null) {
root = node;
}
else {
wasAdded = __________(root, node);
}
if (wasAdded) {
size++;
}
return wasAdded;
public static void main (String args[]) {
BinaryTree<Integer> tree = new BinaryTree<Integer>();
tree.add(3);
tree.add(2);
tree.add(5);
tree.add(4);
tree.add(6);
tree.add(8);
tree.add(1);
}
public boolean remove(E value) {
}
if (root == null) {
return false; }
if (root.value.compareTo(value) == 0) {
if (root.left == null) {
root = root.right;
} else if (root.right == null) {
root = root.left; }
else {
BinaryNode formerRight = root.right;
root = root.left;
addToParent(root, formerRight); }
size--;
return true; }
return removeSubNode(root, value);
private boolean removeSubNode(BinaryNode parent, E value) {
}
int compareParent = parent.value.compareTo(value);
BinaryNode branch = (compareParent > 0)? parent.___ : parent.___;
if (branch == null) {
return false;
}
if (branch.value.compareTo(value) == 0) {
BinaryNode replacement;
if (branch.left == null) {
replacement = branch.right;
}
else if (branch.right == null)
{
replacement = branch.left;
}
else {
BinaryNode formerRight = branch.right;
replacement = branch.left;
addToParent(replacement, formerRight);
}
if (compareParent > 0)
{
parent.__________ = replacement;
}
else {
parent.__________ = replacement;
}
size--;
return true;
}
return removeSubNode(branch, value);
public int size()
{
return size;
}
public void clear()
{
root = null;
size = __;
}
Explanation / Answer
public class BinaryTree <E extends Comparable<? super E>>
private class BinaryNode
private E value;
private BinaryNode right;
private BinaryNode left;
public BinaryNode(E valueIn) {
value = valueIn;
}
private int size = 0;
private BinaryNode root = null;
private boolean addToParent(BinaryNode parentNode, BinaryNode addNode)
{
int compare = parentNode.value.compareTo(addNode.value);
boolean wasAdded = false;
if (compare > 0) {
// if parent has no left node, add new node as left
if (parentNode.left == null) {
parentNode.left = addNode;
wasAdded = true;
} else
{
// otherwise, add to parentNode's left (recursive)
wasAdded = addToParent(parentNode.left, addNode);
}
}
else if (compare < 0) {
// if parent has no right node, add new node as right
if (parentNode.right == null) {
parentNode.right = addNode;
wasAdded = true;
} else
{
// otherwise, add to parentNode's right (recursive)
wasAdded = addToParent(parentNode.right, addNode);
}
}
return wasAdded;
}
public boolean add(E value) {
BinaryNode node = new BinaryNode(value);
boolean wasAdded = true;
if (root == null) {
root = node;
}
else {
wasAdded = addToParent(root, node);
}
if (wasAdded) {
size++;
}
return wasAdded;
}
public static void main (String args[]) {
BinaryTree<Integer> tree = new BinaryTree<Integer>();
tree.add(3);
tree.add(2);
tree.add(5);
tree.add(4);
tree.add(6);
tree.add(8);
tree.add(1);
}
public boolean remove(E value) {
if (root == null) {
return false; }
if (root.value.compareTo(value) == 0) {
if (root.left == null) {
root = root.right;
} else if (root.right == null) {
root = root.left; }
else {
BinaryNode formerRight = root.right;
root = root.left;
addToParent(root, formerRight); }
size--;
return true; }
return removeSubNode(root, value);
}
private boolean removeSubNode(BinaryNode parent, E value) {
int compareParent = parent.value.compareTo(value);
BinaryNode branch = (compareParent > 0)? parent.left : parent.right;
if (branch == null) {
return false;
}
if (branch.value.compareTo(value) == 0) {
BinaryNode replacement;
if (branch.left == null) {
replacement = branch.right;
}
else if (branch.right == null)
{
replacement = branch.left;
}
else {
BinaryNode formerRight = branch.right;
replacement = branch.left;
addToParent(replacement, formerRight);
}
if (compareParent > 0)
{
parent.left = replacement;
}
else {
parent.right = replacement;
}
size--;
return true;
}
return removeSubNode(branch, value);
}
public int size()
{
return size;
}
public void clear()
{
root = null;
size = 0;
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.