Вопрос пользователя:
Ответ нейросети:
public class TreeNode {
int val;
TreeNode left;
TreeNode right;
public TreeNode(int val) {
this.val = val;
}
}
public class BinaryTree {
public int blackHeight(TreeNode root) {
if (root == null) {
return 0;
}
int leftHeight = blackHeight(root.left);
int rightHeight = blackHeight(root.right);
if (leftHeight != rightHeight) {
throw new RuntimeException("Tree is not balanced");
}
return leftHeight + (root.val == 1 ? 1 : 0);
}
public static void main(String[] args) {
TreeNode root = new TreeNode(1);
root.left = new TreeNode(1);
root.right = new TreeNode(1);
root.left.left = new TreeNode(0);
root.left.right = new TreeNode(0);
root.right.left = new TreeNode(0);
root.right.right = new TreeNode(0);
BinaryTree binaryTree = new BinaryTree();
int blackHeight = binaryTree.blackHeight(root);
System.out.println("Black height of the tree: " + blackHeight);
}
}
Этот код реализует функцию blackHeight
, которая принимает корень дерева и возвращает черную высоту дерева. Мы предполагаем, что дерево сбалансированно, поэтому проверяем, что высоты левого и правого поддеревьев равны. Если это условие не выполняется, выбрасываем исключение. Каждый узел дерева имеет значение 0 или 1, где 1 означает черный узел. Мы увеличиваем черную высоту только для черных узлов.
Обратите внимание: ответы, предоставляемые искусственным интеллектом, могут не всегда быть точными. Не рассчитывайте на них в критически важных областях, таких как медицина, юриспруденция, финансы или в вопросах, связанных с безопасностью. Для важных решений всегда обращайтесь к квалифицированным специалистам. Администрация сайта не несет ответственности за контент, сгенерированный автоматически.