Galería de mapas mentales Estructura de datos Capítulo 5 Árbol y árbol binario
Capítulo 5 de "Estructura de datos": clasificación del conocimiento de árboles y árboles binarios, incluidos los conceptos básicos de árboles, el concepto de árboles binarios, recorrido de árboles binarios y árboles binarios de pistas, etc.
Editado a las 2022-11-23 16:07:00,Este es un mapa mental sobre una breve historia del tiempo. "Una breve historia del tiempo" es una obra de divulgación científica con una influencia de gran alcance. No sólo presenta los conceptos básicos de cosmología y relatividad, sino que también analiza los agujeros negros y la expansión. del universo. temas científicos de vanguardia como la inflación y la teoría de cuerdas.
¿Cuáles son los métodos de fijación de precios para los subcontratos de proyectos bajo el modelo de contratación general EPC? EPC (Ingeniería, Adquisiciones, Construcción) significa que el contratista general es responsable de todo el proceso de diseño, adquisición, construcción e instalación del proyecto, y es responsable de los servicios de operación de prueba.
Los puntos de conocimiento que los ingenieros de Java deben dominar en cada etapa se presentan en detalle y el conocimiento es completo, espero que pueda ser útil para todos.
Este es un mapa mental sobre una breve historia del tiempo. "Una breve historia del tiempo" es una obra de divulgación científica con una influencia de gran alcance. No sólo presenta los conceptos básicos de cosmología y relatividad, sino que también analiza los agujeros negros y la expansión. del universo. temas científicos de vanguardia como la inflación y la teoría de cuerdas.
¿Cuáles son los métodos de fijación de precios para los subcontratos de proyectos bajo el modelo de contratación general EPC? EPC (Ingeniería, Adquisiciones, Construcción) significa que el contratista general es responsable de todo el proceso de diseño, adquisición, construcción e instalación del proyecto, y es responsable de los servicios de operación de prueba.
Los puntos de conocimiento que los ingenieros de Java deben dominar en cada etapa se presentan en detalle y el conocimiento es completo, espero que pueda ser útil para todos.
Números y árboles binarios
Conceptos básicos de los árboles.
definición
Un árbol es un conjunto finito de n nodos. Un árbol no vacío debe satisfacer:
Sólo hay un nodo raíz
Cuando n>1, los nodos restantes se pueden dividir en m conjuntos finitos disjuntos Ti, cada conjunto es un subárbol de la raíz.
terminología básica
antepasados, descendientes, padres, hijos, hermanos
Grado: el número de hijos del nodo.
El grado máximo de un nodo se llama grado del árbol.
Nodos de hoja (nodos terminales), nodos de rama (nodos no terminales)
La suma de los grados de los nodos del árbol = la suma del número de ramas = el número de nodos - 1
Profundidad: comenzando desde el nodo raíz y acumulando capa por capa de arriba a abajo.
Altura: partiendo del nodo de la hoja y acumulando capa a capa de abajo hacia arriba.
Árbol ordenado, árbol desordenado
camino, longitud del camino
Bosque: una colección de m árboles separados
naturaleza
El número de nodos en el árbol = la suma de los grados de todos los nodos 1
Hay como máximo m^(i-1) nodos en el i-ésimo nivel de un árbol de grado m.
Un árbol m-ario con altura h tiene como máximo (m^h-1)/(m-1) nodos.
La altura mínima de un árbol m-ario con n nodos es:
Concepto de árbol binario
Definición y características
Definición: Cada nodo tiene como máximo dos subárboles, y los subárboles se pueden dividir en subárboles izquierdo y derecho.
árbol binario especial
árbol binario completo
La altura es h y el número de nodos es 2^h-1
Para el nodo numerado i
padres:
Niño izquierdo: 2i
Niño derecho: 2i 1
árbol binario completo
El número de cada nodo corresponde a un árbol binario completo (es decir, solo el nodo hoja de la derecha está vacío)
naturaleza
①Si i≤Ln/2", entonces el nodo i es un nodo rama; de lo contrario, es un nodo hoja.
②Los nodos de hoja solo pueden aparecer en los dos niveles más grandes. Los nodos de hoja en el nivel más grande están organizados en secuencia en la posición más a la izquierda del nivel.
③Si hay un nodo con grado 1, solo puede haber uno, y el nodo solo tiene hijos izquierdos pero ningún hijo derecho.
④Después de numerar en orden jerárquico, una vez que un nodo (numerado i) aparece como un nodo hoja o solo le queda un hijo, el número es mayor que i Todos los nodos son nodos hoja.
⑤ Si n es un número impar, entonces cada nodo de rama tiene un hijo izquierdo y un hijo derecho, si r es un número par, el nodo de rama con el número más grande (numerado n/2) solo tiene un hijo izquierdo y ningún hijo derecho; Y los otros nodos de rama tienen Hay niños que hacen clic hacia la izquierda y hacia la derecha.
⑥La altura de un árbol binario completo con n nodos es:
árbol de clasificación binaria
Palabra clave del subárbol izquierdo <nodo raíz <subárbol derecho
Los subárboles izquierdo y derecho son cada uno de ellos un árbol de clasificación binario.
árbol binario equilibrado
La diferencia de profundidad entre el subárbol izquierdo y el subárbol derecho de cualquier nodo del árbol no excede 1
Propiedades de los árboles binarios
El número de nodos hoja en un árbol binario no vacío = el número de nodos con grado 2 1, es decir, n0=n2 1
Hay como máximo 2^(k-1) nodos en el k-ésimo nivel de un árbol binario no vacío.
Un árbol binario de altura h tiene como máximo 2^h-1 nodos.
Estructura de almacenamiento de árbol binario
estructura de almacenamiento secuencial
estructura de almacenamiento en cadena
Recorrido de árboles binarios y árboles binarios de pistas.
Recorrido de árbol binario
Recorrido de pedido anticipado (NLR)
Recorrido en orden (LNR)
Recorrido posterior al pedido (LRN)
Algoritmo recursivo → no recursivo (con la ayuda de la pila)
Algoritmo no recursivo para recorrido en orden
Recorrido de nivel (con la ayuda de colas)
Construir un árbol binario a partir de una secuencia transversal
Un árbol binario puede determinarse de forma única por su secuencia de preorden (o postorden) y su secuencia de orden.
El primer nodo de la secuencia de preorden debe ser el nodo raíz, y el nodo raíz divide la secuencia de preorden en dos secuencias: los subárboles izquierdo y derecho.
Encuentre los subárboles izquierdo y derecho en el orden anticipado de acuerdo con los subárboles izquierdo y derecho en el orden y repita los pasos anteriores de forma recursiva.
Un árbol binario puede determinarse de forma única por su secuencia jerárquica y su secuencia en orden.
De acuerdo con las secuencias de preorden y postorden del árbol binario, se puede determinar la relación ancestral de algunos nodos: si el preorden es aX y el postorden es Xa, entonces los nodos del conjunto Si son hermanos, el orden debe ser consistente, es decir, el hermano de la izquierda va primero)
árbol binario de pistas
concepto
Construir un árbol binario de pistas en orden
Árbol binario de pistas con nodo principal
Recorrido de árboles binarios con pistas de orden.
Encuentre el primer nodo debajo de la secuencia en orden en el árbol binario de pistas en orden
Encuentre el sucesor del nodo p en el árbol binario de pistas en orden bajo la secuencia en orden
Algoritmo de recorrido en orden para árboles binarios con pistas en orden sin nodo principal
Árbol binario de pistas de preorden y árbol binario de pistas de postorden
Encuentre el sucesor del nodo en el árbol binario de pistas de pedidos anticipados
Si queda un hijo, será su sucesor.
Si no hay un hijo izquierdo pero sí un hijo derecho, el segundo hijo será el sucesor.
De lo contrario, el dominio de la cadena derecha apunta al sucesor.
Encontrar el sucesor de un nodo en un árbol binario utilizando pistas de postorden
Si x es la raíz de un árbol binario, entonces el sucesor está vacío
Si x es el hijo derecho de ambos padres, o el hijo izquierdo de ambos padres y los padres no tienen descendientes, entonces el sucesor son sus padres.
Si x es el hijo izquierdo del padre y el padre tiene un hijo derecho, el sucesor es el primer nodo enumerado en el recorrido en orden descendente en el subárbol derecho del padre.
Aplicaciones de árboles y árboles binarios.
Árboles de Huffman y codificación de Huffman
definición
Longitud de ruta ponderada: el producto de la longitud de la ruta (número de bordes pasados) desde la raíz del árbol hasta cualquier nodo y el peso del nodo.
La longitud de la ruta ponderada del árbol: la suma de las longitudes de la ruta ponderada de todos los nodos de las hojas del árbol.
Árbol de Huffman: entre los árboles binarios que contienen n nodos de hoja ponderados, el árbol binario con la longitud de ruta ponderada (WPL) más pequeña también se denomina árbol binario óptimo.
La estructura del árbol de Huffman.
proceso de construcción
Dados n nodos con pesos w1, w2,...,wn, el algoritmo para construir un árbol de Huffman se describe a continuación:
1) Trate estos n nodos como n árboles binarios que contienen solo un nodo para formar un bosque F.
2) Construya un nuevo nodo, seleccione los dos árboles con los pesos de nodo raíz más pequeños de F como los subárboles izquierdo y derecho del nuevo nodo y establezca los pesos del nuevo nodo en las raíces de los subárboles izquierdo y derecho. de los pesos de los nodos.
3) Elimine los dos árboles recién seleccionados de F y agregue los árboles recién obtenidos a F.
4) Repita los pasos 2) y 3) hasta que solo quede un árbol en F.
Características
1) Cada nodo inicial eventualmente se convierte en un nodo hoja, y cuanto menor sea el peso, mayor será la longitud del camino desde el nodo hasta el nodo raíz.
2) Durante el proceso de construcción se crea un total de n-1 nuevos nodos (nodos de doble rama), por lo que el número total de nodos del árbol de Huffman es 2n-1.
3) Cada construcción selecciona 2 árboles como hijos del nuevo nodo, por lo que no hay ningún nodo con grado 1 en el árbol de Huffman.
Codificación Huffman
codificación de longitud variable
Los diferentes caracteres se representan mediante bits binarios de longitud desigual; a los caracteres de baja frecuencia se les asignan códigos más largos y a los caracteres de alta frecuencia se les asignan códigos más cortos.
codificación de prefijo
Ninguna codificación es prefijo de otra, por lo que decodificarla es muy sencilla
La codificación Huffman es una codificación de compresión de datos diseñada utilizando codificación de prefijo y longitud variable.
Árbol de Huffman → codificación de Huffman
1) Trate cada carácter que aparece como un nodo independiente, su peso es igual a la frecuencia de aparición (número de veces) y construya el árbol de Huffman correspondiente.
2) Interpretar la codificación de un carácter como una secuencia de marcadores de borde en el camino desde la raíz hasta el carácter, donde un marcador de borde de 0 significa "girar hacia el hijo izquierdo" y una marca de borde de 1 significa "girar hacia el niño izquierdo"; niño correcto"
Y busca en la colección.
Idea básica
Por lo general, la representación principal de un árbol (bosque) se utiliza como estructura de almacenamiento del conjunto de búsqueda de unión, y cada subconjunto está representado por un árbol. Todos los árboles que representan subconjuntos forman un bosque que representa el conjunto completo y se almacenan en la matriz de representación principal. Por lo general, el subíndice del elemento de la matriz se usa para representar el nombre del elemento y el subíndice del nodo raíz se usa para representar el nombre de la subcolección. El nodo principal del nodo raíz es un número negativo.
funcionar
1) Inicial (S): inicializa cada elemento del conjunto s en un subconjunto con un solo elemento.
2) Unión (S, Raíz1, Raíz2): fusiona el subconjunto Raíz2 del conjunto S en el subconjunto Raíz1. Requerir Root1 y Root2 están separados entre sí; de lo contrario, no se realizará la fusión.
3) Buscar (S, x): busque el subconjunto donde se encuentra el elemento único x en el conjunto s y devuelva el nodo raíz del subconjunto.
árbol, bosque
estructura de almacenamiento de árboles
representación de los padres
Se utiliza un conjunto de espacios continuos para almacenar nodos; al mismo tiempo, se agrega un pseudopuntero a cada nodo para indicar la ubicación de los padres.
Puede obtener rápidamente los nodos principales de un nodo, pero debe recorrer la matriz para encontrar los hijos del nodo.
representación infantil
Conecte los nodos secundarios de cada nodo con una única lista vinculada, n nodos corresponden a n listas vinculadas
Encontrar niños es simple, pero encontrar padres requiere atravesar n listas vinculadas
Representación del hermano menor (representación de árbol binario)
Usar una lista binaria enlazada como estructura de almacenamiento del árbol
Nodo
valor de nodo
Puntero al primer hijo del nodo.
Puntero al siguiente nodo hermano del nodo
Es fácil encontrar hijos, pero es más problemático encontrar nodos principales (se puede agregar un puntero principal)
Conversión de árboles, bosques y árboles binarios.
árbol ↔ árbol binario
Usando una lista binaria enlazada como medio, hay un árbol binario único correspondiente a cada árbol (y viceversa)
Regla de conversión: "Hijo izquierdo, hermano derecho"
Secuencia transversal de primera raíz: ABEFCDG
Secuencia transversal posterior a la raíz: EFBCGDA
Bosque ↔ árbol binario
De manera similar a la conversión anterior, cada árbol se convierte primero en un árbol binario y luego la raíz del enésimo árbol se considera como el hermano derecho de la raíz del enésimo árbol.
Recorrido de secuencia en preorden: ABCDEFGHI
Secuencia transversal en orden: BCDAFEHIG
Recorrido de árboles y bosques.
recorrido del árbol
Primero el recorrido de la raíz.
Visite primero el nodo raíz y luego visite cada subárbol por turno
La secuencia transversal es la misma que la secuencia de preorden del árbol binario correspondiente.
recorrido de la raíz posterior
Primero visite cada subárbol por turno, luego visite el nodo raíz
La secuencia transversal es la misma que la secuencia en orden del árbol binario correspondiente.
recorrido de nivel
Viajando por el bosque
recorrido de preorden
Visita el nodo raíz del primer árbol del bosque.
El pedido anticipado atraviesa el bosque de subárbol del nodo raíz en el primer árbol
Reserva atravesar el bosque restante después de eliminar el primer árbol.
recorrido en orden
El recorrido en orden atraviesa el bosque de subárbol del nodo raíz del primer árbol del bosque.
Visita el nodo raíz del primer árbol.
Recorrido en orden del bosque que consta de los árboles restantes después de eliminar el primer árbol