Во-первых, вам нужен алгоритм, чтобы найти конкретный узел на основе его значения.Это может быть легко сделано путем обхода дерева в предварительном порядке, в порядке или после заказа (см. Обход дерева в Википедии , особенно Реализация поиска в глубину ).Этот алгоритм возвращается из рекурсии, если элемент был найден:
Node findNode(Node root, String value) {
if (root == null) return null; // no such node
if (value.equals(root.getValue())) return root; // the node itself contains the value
Node n = findNode(root.getLeft(), value); // search left sub-tree
if (n != null) return n; // we've found it in the left sub-tree
return findNode(root.getRight(), value); // search right sub-tree
}
После этого можно легко поменять значение в дереве:
void exchange(Node root, String value, String newValue) {
Node n = findNode(root, value);
n.setValue(newValue);
}
Конечно, вы также можете пройтидерево итеративно, но если у вас нет очень больших деревьев, то нет никаких причин для , а не использовать более простой рекурсивный подход.