/
Ersh
/
homeworkAlgo5
Обзор
Документация
Войти
/
Ersh
/
homeworkAlgo5
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/Tree.java
94 строки
2 KB
Ersh
upload files
28 ноя 2025, 19:59
28 ноя 2025, 19:59
0d50b03
Код
Авторство
О чём код?
import java.util.ArrayList; import java.util.Arrays; import java.util.Comparator; import java.util.List; import java.util.stream.Collectors; public class Tree { private String name; private Tree left; private Tree right; public Tree(String name) { this.name = name; } public boolean contains(String query) { if (query.compareTo(name) < 0) { return left != null && left.contains(query); } else if (query.compareTo(name) > 0) { return right != null && right.contains(query); } else { return name.equals(query); } } public String getName() { return name; } public void setName(String name) { this.name = name; } public Tree getLeft() { return left; } public void setLeft(Tree left) { this.left = left; } public Tree getRight() { return right; } public void setRight(Tree right) { this.right = right; } public boolean isNamePyramid() { boolean leftOk = true; boolean rightOk = true; if (left != null) { if (name.length() > left.name.length()) { return false; } leftOk = left.isNamePyramid(); } if (right != null) { if (name.length() > right.name.length()) { return false; } rightOk = right.isNamePyramid(); } return leftOk && rightOk; } @Override public String toString() { String[] leftLines = (left != null ? left.toString() : "").split("\n"); String[] rightLines = (right != null ? right.toString() : "").split("\n"); int maxLeftSize = Arrays.stream(leftLines) .map(String::length) .max(Comparator.naturalOrder()) .orElse(0); List<String> lines = new ArrayList<>(); lines.add(" ".repeat(maxLeftSize + 1) + name); for (int i = 0; i < Math.max(leftLines.length, rightLines.length); i++) { String prefix = i < leftLines.length ? leftLines[i] : ""; lines.add( prefix + " ".repeat(maxLeftSize + name.length() + 1 * 2 - prefix.length()) + (i < rightLines.length ? rightLines[i] : "") ); } return lines.stream().collect(Collectors.joining("\n")); } }