Skip to content

Commit

Permalink
Изменена структура
Browse files Browse the repository at this point in the history
  • Loading branch information
Pastor committed Dec 2, 2024
1 parent e0e777e commit 99a0595
Showing 1 changed file with 11 additions and 6 deletions.
17 changes: 11 additions & 6 deletions vol5/src/main/java/ru/mifi/practice/vol5/tree/PathTree.java
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ private Optional<Node<K, V>> search(Node<K, V> parent, K[] elements, int index)
public void add(K[] elements, V value) {
int index = 0;
K element = transformer.transform(elements[index]);
Node<K, V> node = nodes.computeIfAbsent(element, e -> new Node<>(null, e, value));
Node<K, V> node = nodes.computeIfAbsent(element, e -> new Node<>(null, e));
add(node, elements, index + 1, value);
}

Expand All @@ -71,28 +71,33 @@ private void add(Node<K, V> parent, K[] elements, int index, V value) {
}
K element = transformer.transform(elements[index]);
Map<K, Node<K, V>> nodes = parent.nodes;
Node<K, V> node = nodes.computeIfAbsent(element, e -> new Node<>(parent, e, value));
Node<K, V> node = nodes.computeIfAbsent(element, e -> new Node<>(parent, e));
if (index + 1 < elements.length) {
add(node, elements, index + 1, value);
} else {
if (node.value == null) {
node.value = value;
} else if (!node.value.equals(value)) {
System.err.println("Node. Expected = " + node.value + " but assignee = " + value);
}
}
}

@Override
public Optional<V> match(K[] key) {
return search(key).map(Node::value);
return search(key).filter(n -> n.value != null).map(Node::value);
}
}

final class Node<K, V> {
private final K key;
private final V value;
private V value;
private final Node<K, V> parent;
private final Map<K, Node<K, V>> nodes;

private Node(Node<K, V> parent, K key, V value) {
private Node(Node<K, V> parent, K key) {
this.key = key;
this.parent = parent;
this.value = value;
this.nodes = new HashMap<>();
}

Expand Down

0 comments on commit 99a0595

Please sign in to comment.