/
Hatshess
/
PyramidsSearch
Обзор
Документация
Войти
/
Hatshess
/
PyramidsSearch
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/Tree.java
94 строки
3 KB
Hatshess
изменение метода isNamePyramid
04 окт 2025, 09:41
04 окт 2025, 09:41
e2b4028
Код
Авторство
О чём код?
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() { int length1 = getName().length(); if (getRight() == null) { if (getLeft() == null) { return true; } int length2 = getLeft().getName().length(); if (length1 > length2) { return false; } return getLeft().isNamePyramid(); } int length2 = getLeft().getName().length(); int length3 = getRight().getName().length(); if (length1 > length2 || length1 > length3) { return false; } return getLeft().isNamePyramid() && getRight().isNamePyramid(); } @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() + 2 - prefix.length()) + (i < rightLines.length ? rightLines[i] : "") ); } return lines.stream().collect(Collectors.joining("\n")); } }