Red de conocimiento informático - Aprendizaje de código fuente - Diseño de algoritmo de estructura de datos: calcule el número de nodos de hoja de un árbol binario y genere los resultados

Diseño de algoritmo de estructura de datos: calcule el número de nodos de hoja de un árbol binario y genere los resultados

El código es el siguiente:

#include

#include

typedef struct BiTNode

{

datos de caracteres;

estructura BiTNode *lchild,*rchild;

}BiTNode,*BiTree;

void CreatTree(BiTree & A)

{

{

char ch;

scanf("%c ",& amp;ch);

if(ch=='#')

{

A=NULL;

}

else

{

A=nuevo BiTNode;

A->data=ch;

CreatTree(A ->lchild);

CreatTree(A->rchild);

}

}

int NodeTree(BiTree A)

{

si(A==NULL)

devuelve 0;

si no (A->lchild= =NULL&&A- >rchild==NULL)

Devuelve 1;

else

devuelve NodeTree(A->lchild )+NodeTree(A->rchild) ;

}

int main()

{

BiTree?A;

int b;

printf("Asignación de precedencia (nulo es denegado por #):");

CreatTree(A);

b=NodeTree(A);

printf("*** tiene %d nodos hoja\n",b);

}

Extensión

Propiedades de los árboles binarios

1. Para cualquier árbol binario, si su número de nodos de hoja es N0 y el número total de nodos de orden 2 es N2, entonces N0=N2+1;

2. Un árbol tiene N Si los nodos de un árbol binario completo de nodos se almacenan en orden, la relación entre los nodos es la siguiente:

Si I es el número del nodo, entonces si I> 1, entonces el número de su nodo padre es I/2;

Si 2*I<=N, entonces su nodo hijo izquierdo (es decir, si 2*I>N, no hay ningún nodo hijo izquierdo nodo;

Si 2*I+ 1<=N, entonces el número de nodo de su nodo hijo derecho es 2*I+1; si 2*I+1>N, no hay ningún nodo hijo derecho.

3. Dados N nodos, se pueden formar h(N) diferentes árboles binarios, h(N) es el enésimo término del número catalán, h(n)=C(2*n, n)/. (n+1).

4. Hay i puntos de ramificación, I es la suma de las longitudes de los caminos de todos los puntos de ramificaciones, J es la suma de las longitudes de los caminos de las hojas J=I+2i [2 ] 5.