Pregunta

De acuerdo a Wikipedia,

  

La altura de un árbol es la longitud del camino desde la raíz a la   nodo más profundo en el árbol. A (arraigado) árbol con sólo un nodo (el   raíz) tiene una altura de cero (o uno).

Yo no lo entiendo - ¿es cero o uno (o ambos)

¿Fue útil?

Solución

Es sólo una assuption que realice para la descripción recursiva de la altura de un árbol binario. Se puede considerar un árbol compuesto por sólo un nodo, ya sea con 0 altura o con 1 altura.

Si realmente quiere pensar que de alguna manera se puede pensar que

  • es 0 si se tiene en cuenta la altura como un recuento de flancos (de modo que un solo nodo no tiene ninguna ventaja, por lo tanto, 0)
  • es 1 si se tiene en cuenta la altura como un número de nodos (de modo que un solo nodo como recuentos 1)

Esto es sólo para describir la cantidad de la altura del árbol más pequeño tiene, a continuación, en cualquier caso, siempre que se añada un nodo descendente va a agregar también una ventaja relacionada por lo que aumentará en consecuencia.

En el ejemplo proporcionado en Wikipedia:

text alt

Este árbol puede tener altura 4 (nodos) o 3 (bordes). Depende de si usted está contando que por los bordes o por nodos.

Otros consejos

Una ventaja de usar un número de nodos en lugar de un recuento de borde es que se distingue el caso vacío (cero nodos, y nivel de nodo) de la caja mínima (un nodo, y un nivel de nodo de uno). En algunos casos, un árbol vacío no será significativo, pero en otros casos un intento vacío será perfectamente legítimo.

depende de la convención . No hay una respuesta "correcta" aquí. Me enseñaron que es 1. Pero al igual que cero es correcta.

mi opinión, Altura de un nodo raíz debe ser 0. Tiene sentido práctico como 2 ^ altura está también le proporciona el número de nodos en ese nivel.

Suponiendo que se está calculando la altura de una manera recursiva en la clase nodo Me gustaría hacer esto para devolver la altura sin incluir la altura de la raíz (código de Java):

int height(){
    int leftHeight = 0;
    int rightHeight = 0;
    if(left != null)
        leftHeight =+ left.height() + 1;
    if(right != null)
        rightHeight =+ right.height() + 1;
    return Math.max(leftHeight, rightHeight);
}

Si desea incluir la altura de la raíz, entonces me gustaría hacer esto:

int height(){
    int leftHeight = 0;
    int rightHeight = 0;
    if(left != null)
        leftHeight =+ left.height();
    if(right != null)
        rightHeight =+ right.height();
    return Math.max(leftHeight, rightHeight) + 1;
}

depende de cómo desea interpretar la altura de un árbol. en algunas aplicaciones, un árbol con un nodo se interpreta como que tiene una altura de unos y otros lo consideran como teniendo altura de cero.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top