Notas de clase: la estructura lógica del árbol, la estructura de almacenamiento del árbol.

La estructura lógica del
árbol : un conjunto finito de n (n≥0) nodos.
Cuando n = 0, se llama árbol vacío ;
cualquier árbol no vacío cumple las siguientes condiciones: (
1) Solo hay un nodo específico llamado raíz; (
2) Cuando n> 1, el resto, excepto el nodo raíz El nodo se divide en m (m> 0) conjuntos finitos disjuntos T1, T2, ..., Tm, donde cada conjunto es un árbol, y se llama un subárbol de este nodo raíz.
La definición de un
árbol es
el grado de un nodo que es un término básico del árbol utilizando un método recursivo : el número de subárboles que posee el nodo.
El grado del árbol: el valor máximo del grado de cada nodo en el árbol.
Nodo hoja : un nodo con un grado de 0, también conocido como nodo terminal.
Nodo de rama : un nodo cuyo grado no es 0, también conocido como nodo no terminal.
Hijos y padres : el nodo raíz de un subárbol en el árbol se llama nodo hijo de este nodo, y este nodo se llama nodo padre de su nodo hijo;
hermano : los nodos hijos con el mismo padre se llaman entre sí Para hermanos
Ruta : Si la secuencia de nodo n1, n2, ..., nk del árbol tiene la siguiente relación: el nodo ni es el padre de ni + 1 (1 <= i <k), entonces n1, n2, ..., nk se denominan a La ruta de n1 a nk; el número de bordes que pasan en la ruta se llama longitud de la ruta .
Antepasados ​​y descendientes : en el árbol, si hay una ruta desde el nodo x al nodo y, entonces x se llama ancestro de y, e y se llama descendiente de x.
Capa de nodo: El número de capas del nodo raíz es 1; para cualquier otro nodo, si un nodo está en la capa k, el nodo hijo está en la capa k + 1.
Profundidad del árbol : el número máximo de todos los nodos en el árbol, también conocido como altura .
Número de secuencia : los nodos en el árbol están numerados secuencialmente de 1 a la capa inferior y la misma capa de izquierda a derecha en orden de números naturales consecutivos a partir de 1.
Árbol ordenado, árbol desordenado : si los subárboles de los nodos en un árbol están ordenados de izquierda a derecha, este árbol se llama árbol ordenado; de lo contrario, se llama árbol desordenado.
Bosque : m (m≥0) una colección de árboles disjuntos.
Recorrido del árbol : a partir del nodo raíz, se accede a todos los nodos del árbol en un cierto orden, de modo que cada nodo se visita una vez y solo una vez.
La esencia del recorrido : estructura de árbol (estructura no lineal) → estructura lineal.
Los árboles generalmente tienen tres formas: transversal de orden previo (raíz) , transversal de orden posterior (raíz) y transversal de jerarquía (segundo) .
Recorrido de
preorden La operación transversal de preorden del árbol se define como: si el árbol está vacío, no se realiza ningún recorrido; de lo contrario, ⑴ visite el nodo raíz; ⑵ recorra cada subárbol del nodo raíz en orden de izquierda a derecha.
Recorrido de orden
posterior La operación de recorrido de orden posterior del árbol se define como: si el árbol está vacío, el recorrido finaliza; de lo contrario, ⑴ atraviese cada subárbol del nodo raíz en el orden de izquierda a derecha; ⑵ visite el nodo raíz.
La
operación transversal del orden del árbol transversal del orden se define como: comenzando desde la primera capa del árbol (es decir, el nodo raíz), atravesando capa por capa de arriba hacia abajo, en la misma capa, en orden de izquierda a derecha Visita.
Estructura de almacenamiento de árboles
La relación lógica entre los nodos en el árbol: una relación de uno a muchos.
La clave de la estructura de almacenamiento: cómo representar a los padres e hijos del nodo.
La
idea básica de la notación principal : use una matriz unidimensional para almacenar cada nodo del árbol (generalmente almacenado en orden), un elemento en la matriz corresponde a un nodo en el árbol, cada nodo registra dos tipos de información: La información de datos y el subíndice del padre del nodo en la matriz.
Definición de tipos de datos de nodo en notación primaria

template <class T>
struct PNode{
     T data; 
     int parent; 
};

Notación secundaria: notación de lista vinculada múltiple (el campo de puntero en un nodo representa un elemento secundario)
Cada nodo en la lista vinculada incluye un campo de datos y múltiples campos de puntero, cada campo de puntero apunta a un nodo secundario del nodo.
Es igual al número de campo de puntero árbol: un programa
inconvenientes: el espacio desperdiciado
del nodo es igual al número de los punteros: Esquema de dos
inconvenientes: la estructura de nodos inconsistente
representación infantil - La representación de lista de elementos secundarios (por cada nodo para crear una Lista enlazada individual)
Características: junte todos los elementos secundarios de cada nodo para formar una lista lineal.
Idea básica: Organice los elementos secundarios de cada nodo como una tabla lineal y almacénelos como una sola lista vinculada, luego n nodos tienen un total de n listas vinculadas secundarias.
Las n listas enlazadas individualmente tienen n punteros de cabecera, que forman una tabla lineal.
Para facilitar la búsqueda, el puntero principal de cada lista vinculada se almacena y almacena secuencialmente.
Finalmente, la matriz que almacena n punteros principales y la matriz que almacena n nodos se combinan para formar la matriz principal de la lista vinculada secundaria.
Nodo hijo

struct CTNode {
     int child;      
     CTNode *next; 
};

Nodo de encabezado

template <class T>
struct CBNode {
     T data;     
     CTNode *firstchild; 
};

Notación de hermano menor
El primer hijo de un nodo es único y el hermano derecho de un nodo es único. Establezca dos punteros al primer hijo y hermano derecho del nodo.
Estructura de nodo

template <class T>
struct TNode{
     T data;      
     TNode <T> *firstchild, *rightsib; 
};

Resumen de la estructura de almacenamiento del árbol Almacenamiento
secuencial: esencialmente una
notación primaria de puntero estático , principal,
almacenamiento de cadena de notación secundaria :
notación de lista vinculada múltiple, notación de lista vinculada secundaria, notación de hermano secundario

48 artículos originales publicados · Me gusta 25 · Visita 2453

Supongo que te gusta

Origin blog.csdn.net/qq_43628959/article/details/102990124
Recomendado
Clasificación