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 p>
{
datos de caracteres;
estructura BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
void CreatTree(BiTree & A)
{
{
char ch;
scanf("%c ",& amp;ch);
if(ch=='#')
{
A=NULL;
} p>
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) ; p>
}
int main()
{
BiTree?A;
int b;
printf("Asignación de precedencia (nulo es denegado por #):");
CreatTree(A);
b=NodeTree(A); p>
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.