The remove method starts at line 100:
@Override
public boolean remove(Object o) {
if (o.getClass() != String.class) throw new UnsupportedOperationException();
//After using the remove method to remove the last added node from the tree, the size method should return N-1.
if (listTree.indexOf(o) == listTree.size()-1) intNodes -= 1;
//After removing the second node added to the tree, the size method should
//return N/2 + 1 (if N>2 and a power of two), where N is the size of the tree before removal.
// To be honest, this recommend recommendation is kind of vague. It's not really clear the the size method should return.
if (listTree.indexOf(o) == 2) intNodes = intNodes / 2 + 1;
listTree.remove(o);
return true;
}
@Override
public int size() {
return intNodes;
}
package com.codegym.task.task20.task2028;
import java.util.List;
public class Solution {
public static void main(String[] args) {
List<String> list = new CustomTree();
for (int i = 1; i < 16; i++) {
list.add(String.valueOf(i));
}
System.out.println("The list size is " + list.size());
System.out.println("The expected parent is 3. The actual parent is " + ((CustomTree) list).getParent("8"));
System.out.println("The expected parent is null. The actual parent is " + ((CustomTree) list).getParent("20"));
list.remove("3");
System.out.println("The expected parent is null. The actual parent is " + ((CustomTree) list).getParent("8"));
list.add("16");
System.out.println("The expected parent is 9. The actual parent is " + ((CustomTree) list).getParent("16"));
list.remove("4");
list.remove("5");
list.remove("6");
System.out.println("Expected: true. Actual: " + list.add("20"));
System.out.println("The expected parent is 1. The actual parent is " + ((CustomTree) list).getParent("20"));
}
}