Red de conocimiento informático - Conocimiento del nombre de dominio - Programación de árbol binario para niños

Programación de árbol binario para niños

Primero, veamos la definición de árbol de clasificación binario:

Un árbol de clasificación binario también se llama árbol de búsqueda binario. Es un árbol vacío o un árbol binario con las siguientes propiedades: (1) Si el subárbol izquierdo no está vacío, entonces los valores de todos los nodos del subárbol izquierdo son menores que el valor de su nodo raíz ( 2) Si el subárbol derecho no está vacío, entonces los valores de todos los nodos en el subárbol derecho son mayores que el valor de su nodo raíz (3) Los subárboles izquierdo y derecho también son árboles ordenados binariamente;

Por definición, recorrido en orden La secuencia de salida es una "secuencia creciente de valores de nodo de pequeño a grande"

La referencia del código es la siguiente:

#¿Contiene? ltstdio.h gt

#¿Contiene? ltmalloc.h gt

typedef? int? TipoClave

typedef? estructura? ¿nodo? //Tipo de registro

{

KeyType? Clave; //Elemento de palabra clave

estructura? ¿nodo? *lniño,*rniño? //Puntero secundario izquierdo y derecho

}?BSTNode

int? ¿InsertarBST(BSTNode?*ampp,KeyType?k)?

{

¿Y si? (p==NULL)//El árbol original está vacío. El registro recién insertado es el nodo raíz.

{

p=(BSTNode?*)malloc(sizeof(BSTNode));

p->;key = k;

p->l child = p- gt;rchild = NULL

¿Regresión? 1;

}

¿Y si? ¿si? (k = = p- gt; clave)? //Los nodos con la misma palabra clave en el árbol devuelven 0.

¿Volver? 0;

¿Y si? ¿si? (k ltp->clave)?

¿Volver? insertar BST(p-gt;lchild,k);? //Insertar en el subárbol izquierdo de *p.

Otro

¿Devolver? insert BST(p-gt;rchild,k); //Insertar en el subárbol derecho de *p.

}

¿BSTNodo? *CrearBST(¿Tipo de clave?A[],int?n)? // Devuelve el puntero del nodo raíz BST.

{

BSTNodo? * bt = NULL//Inicialmente bt es un árbol vacío.

int? I = 0;

¿Cuándo? (¿Entiendo)?

{

InsertarBST(bt,A[I]);? //Inserte la palabra clave A[i] en el árbol de clasificación binario t.

i ;

}

¿Volver? Bt; // Devuelve el puntero raíz del árbol de clasificación binario establecido.

}

¿Anulado? mid_order(BSTNode?*T)//Atraviesa el árbol binario en orden medio

{

If (T)

{

Orden medio (T- gt;l niño);

printf("?d?", T-gt;key);

Orden medio (T- gt; rchild);

p>

}

}

¿Anulado? main()

{

BSTNodo? *bt, *p, *f;

int? n = 9;

¿Tipo de clave? a[]={1, 12, 5, 8, 3, 10, 7, 13, 9};

bt=CreateBST(a, n);

printf(" BST: "); orden intermedia (Bt); printf (" \ n ");

}