Escriba un programa para contar el número de subárboles de valor único en un árbol dado.

Suponiendo que los subárboles de valor único significan que solo hay un valor único sobre todos los nodos en el subárbol, se sigue un algoritmo de tiempo lineal al implementar el siguiente método y luego llamarlo desde la raíz.

  • Si este nodo es una hoja, incremente un contador global, anote este nodo como la raíz de un subárbol de valor único y regrese. (Este es el caso base).
  • De lo contrario, este nodo no es una hoja. Verifique recursivamente si cada nodo es la raíz de un subárbol de valor único y, además, vea si cada elemento secundario coincide en valor con el nodo actual. Si un solo nodo falla en cualquiera de estas verificaciones, entonces este nodo no es un subárbol de valor único. De lo contrario, es así que incremente el contador global, anote el nodo como la raíz de un subárbol de valor único y regrese.

Esto se ejecuta en tiempo lineal porque cada nodo será el parámetro principal del método recursivo exactamente una vez, y cada nodo, que tiene un padre único, se considera exactamente una vez en el cuerpo del método.

cuenta int estática = 0;
public static boolean findUni (nodo BSTNode ) {
if (nodo == nulo) devuelve verdadero;
boolean left = findUni (node.left);
derecho booleano = findUni (nodo.right);
if (left && right && (node.left == null || node.left.data == node.data) &&
(node.right == null || node.right.data == node.data)) {
recuento ++;
volver verdadero;
}
falso retorno;
}

More Interesting

¿Cuántas veces puedes posponer aceptablemente una entrevista de Google?

Una cadena contiene solo 0 y 1 (cualquier número de 0 y 1). Dado n (longitud de la cadena, no la cadena en sí), ¿cuántas permutaciones de cadena son posibles donde cada subsecuencia contagiosa de longitud principal de la cadena tiene un número mayor o igual de 0 que número de 1?

¿Cómo debo prepararme para las entrevistas FSAE o BAJA?

¿Qué cambiarías en este currículum para obtener una entrevista técnica en una empresa tecnológica (como pasante de ingeniería de software)?

Al hacer una entrevista de codificación de pizarra y te quedas atascado, ¿está bien explicarle al entrevistador cómo usarías Google para encontrar una respuesta?

Cómo preparar mi programación C (codificación) para entrevistas

¿Existe algún criterio porcentual (para el 10 ° y 12 ° y BE) para obtener un trabajo en Amazon India?

Dado un número de dígito d1d2d3 ... dn, ¿de cuántas maneras podemos evaluar que la expresión sea un número X insertando + o -?

¿Qué tipo de preguntas se hacen en Compro Technologies?

¿Cómo se manejaría mejor una pregunta de entrevista de programación como: cómo puede transferir un archivo extremadamente grande a través de una red y cómo puede optimizar el proceso?

¿Los reclutadores ven la calidad del código de la solución redonda de codificación en línea?

¿Cuántas veces aparecerá cada dígito del 0 al 9 cuando todos los números del 1 al N estén escritos en notación decimal?

¿Qué sitio de codificación competitivo tiene la mejor oportunidad de obtener una entrevista para un puesto de Ingeniería de Software?

¿Cuáles son algunas de las preguntas del rompecabezas formuladas en las entrevistas?

Cómo obtener una entrevista técnica de bootcamp de codificación