isBalanced method

bool isBalanced()

Проверяет, сбалансировано ли дерево Дерево считается сбалансированным, если разница в глубине любых двух поддеревьев не превышает 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;
}