Не прохожу последний тест, не понимаю почему
package com.javarush.task.task20.task2028;
import java.io.Serializable;
import java.util.AbstractList;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
public class CustomTree extends AbstractList<String> implements Serializable, Cloneable {
Entry<String> root;
private transient List<Entry> entryList = new ArrayList<>();
public CustomTree() {
root = new Entry<String>(null);
}
static class Entry<T> implements Serializable {
String elementName;
boolean availableToAddLeftChildren, availableToAddRightChildren;
boolean newLineRootElement;
Entry<T> parent, leftChild, rightChild;
public Entry(String name) {
elementName = name;
newLineRootElement = false;
availableToAddLeftChildren = true;
availableToAddRightChildren = true;
}
private void checkChild() {
if (this.leftChild != null) {
availableToAddLeftChildren = false;
}
if (this.rightChild != null) {
availableToAddRightChildren = false;
}
}
public boolean isAvailableToAddChildren() {
return this.availableToAddRightChildren || this.availableToAddLeftChildren;
}
}
@Override
public boolean add(String s) {
Entry entry = new Entry(s);
if (entryList.size() == 0) {
entry.parent = root;
root.leftChild = entry;
} else {
if (entryList.size() == 1) {
entry.parent = root;
root.rightChild = entry;
} else {
for (Entry ent : entryList) {
if (ent.isAvailableToAddChildren()) {
entry.parent = ent;
if (ent.leftChild == null) {
ent.leftChild = entry;
ent.availableToAddLeftChildren = false;
}
if (ent.rightChild == null) {
ent.rightChild = entry;
ent.availableToAddRightChildren = false;
}
break;
}
}
}
}
entryList.add(entry);
return true;
}
public String getParent(String s){
String parentName = null;
for (Entry entry :entryList){
if (entry.elementName.equals(s)){
parentName = entry.parent.elementName;
}
}
return parentName;
}
@Override
public String get(int index) {
throw new UnsupportedOperationException();
}
@Override
public int size() {
return entryList.size();
}
@Override
public String set(int index, String element) {
throw new UnsupportedOperationException();
}
@Override
public void add(int index, String element) {
throw new UnsupportedOperationException();
}
@Override
public String remove(int index) {
throw new UnsupportedOperationException();
}
@Override
public List<String> subList(int fromIndex, int toIndex) {
throw new UnsupportedOperationException();
}
@Override
protected void removeRange(int fromIndex, int toIndex) {
throw new UnsupportedOperationException();
}
@Override
public boolean addAll(int index, Collection<? extends String> c) {
throw new UnsupportedOperationException();
}
}
