public static bool EstaBalanceado(Nodo <Entero> nodo) { var mm = new DetMinMax(); mm.Minimo = int.MaxValue; mm.Maximo = int.MinValue; EncontrarMinMax(mm, nodo, 0); return((mm.Maximo - mm.Minimo <= 1) ? true : false); }
private static void EncontrarMinMax(DetMinMax mm, Nodo <Entero> node, int depth) { if (node == null) { return; } EncontrarMinMax(mm, node.izquierdo, depth + 1); EncontrarMinMax(mm, node.derecho, depth + 1); // En el nodo final if (node.izquierdo == null || node.derecho == null) { if (mm.Minimo > depth) { mm.Minimo = depth; } if (mm.Maximo < depth) { mm.Maximo = depth; } } }