Programación de árbol binario para niños
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 ");
}