isBalanced method
Проверяет, сбалансировано ли дерево Дерево считается сбалансированным, если разница в глубине любых двух поддеревьев не превышает 1
Implementation
bool isBalanced() {
bool balanced = true;
int getHeight(Node node) {
if (!balanced) return 0;
final children = getNodeEdges(node);
if (children.isEmpty) return 0;
int minHeight = 999999;
int maxHeight = 0;
for (final child in children) {
final height = getHeight(child) + 1;
minHeight = min(minHeight, height);
maxHeight = max(maxHeight, height);
}
if (maxHeight - minHeight > 1) {
balanced = false;
}
return maxHeight;
}
getHeight(root);
return balanced;
}