estructura de árbol implementación de JavaScript (a)

estructura de árbol implementación de JavaScript (a)

En primer lugar, la estructura de árbol Introducción

1.1. Sencillo de entender la estructura de árbol

¿Qué es un árbol?

Real del árbol:

imagen-20200229205530929

Árbol características:

  • Generalmente tiene un árbol de raíz , la raíz está conectado a la cajuela ;
  • Trunk bifurcación se produce, la formación de muchas ramas , las ramas continuará para diferenciarse en más pequeñas ramas ;
  • La última rama es una hoja ;

En la vida real muchas de las estructuras son abstractas de árbol, simulados estructura de árbol corresponde a la rotación 180°del árbol.

imagen-20200229205630945

En contraste con la estructura de árbol de la mesa de matriz / lista / de hash ¿Cuáles son las ventajas de la misma:

matriz:

  • Ventajas: se puede acceder a los valores del índice , de alta eficiencia;
  • Desventajas: necesidad de encontrar los datos cuando los datos de clasificación , genera una matriz ordenada , con el fin de mejorar la eficiencia de búsqueda; y cuando la inserción y eliminación de elementos, requiere una gran cantidad de desplazamiento de la operación ;

lista:

  • Ventajas: inserción y borrado de datos son de alta eficiencia;
  • Desventajas: Encuentra baja eficiencia, necesidad de empezar desde cero con el fin de encontrar, hasta que encuentre los datos de destino; cuando se necesita para insertar o borrar los datos en el medio de la lista, inserción o supresión de la eficiencia no es alta.

Las tablas hash:

  • Pros: la tabla hash de inserción / consulta / eficiencia de eliminación es muy alta;
  • Desventajas: la utilización del espacio no es alta , la parte inferior de la matriz utilizada en la unidad lote está no utilizados, y elementos de una tabla de hash son desordenada , y los elementos no pueden atravesar la tabla hash en un orden fijo, y no pueden identificar rápidamente de hash tabla de máximo o mínimo de estos valores especiales.

árbol:

Ventajas: estructura de árbol combina las ventajas de las tres estructuras, sino también para compensar las deficiencias de su presencia (aunque no necesariamente mejor que su alta eficiencia), tal como una estructura de datos de árbol están ordenados, alta eficiencia de búsqueda; utilización del espacio alta, y puede obtener rápidamente valores máximos y mínimos y similares.

En general: para cada estructura de datos tiene sus propios escenarios de aplicación específicos

árbol:

  • Árbol (Tree) : a n (n ≥ 0) que consiste en nodos conjunto finito . Cuando n = 0, llamado el árbol vacío .

Para cualquiera de un árbol no vacío (n> 0), que tiene las siguientes propiedades:

  • Hay un número llamado una raíz (raíz) un nodo en particular, con r representa;
  • Los nodos restantes pueden ser divididos en m (m> 0) disjunta conjunto finito de T ~ 1 ~, T ~ 2 ~, ..., T ~ m ~, en el que cada conjunto es en sí mismo un árbol, llamado el árbol original subárbol (rama) .

El término árbol se utiliza:

imagen-20200229221126468

  • grado de nodo (grados) : el nodo número de la sub-árbol , por ejemplo del nodo B es 2;
  • grado Árbol : Todas árbol de nodos de grado máximo ., grado que la figura 2 es un árbol;
  • Leaf (hoja) : un nodo de grado 0 (también referido como un nodo hoja), como se muestra arriba en H, I y similares;
  • Un nodo padre (el Padre) : 0 grados no es el nodo es un nodo padre, como el nodo B es el padre de la figura nodos D y E;
  • nodo hijo (niño) : Si B es el nodo padre D, entonces D es un nodo hijo de B;
  • Del hermano (el hermano) : cada nodo que tiene el mismo padre son hermanos a cada otro nodo, tales como el mapa B y C, D y E entre sí nodos hermanos;
  • Longitud de la trayectoria y la ruta : la ruta de acceso se refiere a un nodo de camino a otro nodo, el número de lados de la trayectoria que comprenden longitud de la trayectoria se llama, tal como A-> path longitud H es 3;
  • Nivel del nodo (nivel) : especificado nodo raíz en la capa 1 , el número de capas es uno de los otros nodos de su matriz nodo add 1 nivel . El Nivel-B y el nodo C es 2;
  • profundidad del árbol (profundidad) : todos los nodos en el árbol de nivel máximo es la profundidad del árbol, la profundidad del árbol de la figura 4 como se describe anteriormente;.

1.2. Representación de la estructura de árbol

  • La representación más común :

imagen-20200229230417613

Como se muestra, la estructura de árbol composición similar al modo de lista, está constituida por uno conexiones de nodos. Sin embargo, dependiendo del número de nodos de cada padre nodos hijos, cada nodo necesita un número de referencia de los padres es diferente. Por ejemplo, el nodo A requiere 3 punto de referencia a nodos hijo B, C, D; nodo B requiere dos referencias, punto a nodos hijos E y F; nodos K ​​porque no hay nodos secundarios, no necesitan una referencia.

La desventaja de este método es que no podemos determinar si un número de referencia de nodo.

  • Hijo - hermano notación :

imagen-20200229232805477

Esta representación puede ser un registro completo de datos para cada nodo, tales como:

//节点A
Node{
  //存储数据
  this.data = data
  //统一只记录左边的子节点
  this.leftChild = B
  //统一只记录右边的第一个兄弟节点
  this.rightSibling = null
}

//节点B
Node{
  this.data = data
  this.leftChild = E
  this.rightSibling = C
}

//节点F
Node{
  this.data = data
  this.leftChild = null
  this.rightSibling = null
}

Esto indica la ventaja de un método es que se determinó el número de nodos en cada referencia.

  • Giratorios hermanos representación hijos -

El siguiente es el hijo - que consta de hermanos representación de la estructura de árbol:

imagen-20200229234549049

La rotación en sentido horario de 45 °, después de lo cual:

imagen-20200229235549522

Esto se convertirá en un árbol binario , por lo que podemos concluir: Cualquier árbol puede ser modelado por un árbol binario . Pero este nodo padre no se cambia? De hecho, se establece el nodo padre sólo para conveniencia apuntan a un nodo hijo, el código para el padre que es no importa, siempre y cuando la derecha para encontrar el nodo correspondiente.

En segundo lugar, el árbol binario

2.1 Introducción a Binary Tree

concepto del árbol binario : Si cada nodo en el árbol sólo en la mayoría de dos nodos hijos , de modo que un árbol se llama un árbol binario ;

Binary Tree es muy importante, no sólo por la simple, pero también porque casi todos los árboles se puede expresar como una forma de árbol binario.

Composición binaria :

  • árbol binario puede estar vacío, es decir ningún nodo;
  • Si el árbol binario no está vacía, se le llama el nodo raíz y su subárbol izquierdo dos disjuntos binaria TR TL y el subárbol derecho de la composición;

Cinco forma binaria :

imagen-20200301001718079

Figura, respectivamente, en: árbol binario vacío, el árbol binario tiene sólo un nodo, sólo el subárbol izquierdo TL árbol binario, TR, sólo el subárbol derecho binario y hay cerca de dos sub-árbol binario.

Características del árbol binario :

  • Una capa de árbol de nodos binario máximo i es: 2 ^ (i-1) ^, i> = 1;
  • El número total máximo de nodos en el árbol binario de la profundidad k es: 2 ^ k ^ - 1, k> = 1;
  • Cualquier árbol binario no vacía, cuando n ~ 0 ~ representa el número de nodos de hoja, n ~ 2 ~ expresado como el número de no hoja nodos 2, a continuación, satisfacer tanto la relación: n ~ 0 ~ = n ~ 2 ~ + 1 ; como se muestra a continuación: H, e, I, J, G es un nodo hoja, el número total es 5; a, los nodos B, C, F no son hojas de grado 2, y un total de 4; satisfacen n ~ 0 ~ = n ~ 2 ~ 1 + ley.

imagen-20200301092140211

2.2. Árbol binario especial

árbol binario perfecto

árbol binario perfecto (perfecto Binary Tree) se ha convertido en un árbol lleno binario (completa Binary Tree), en el árbol binario, además de los nodos de la hoja de la siguiente capa, cada nodo tiene dos nodos hijos, que constituye un árbol binario perfecto.

imagen-20200301093237681

árbol binario completo

árbol binario completo (completa Binary Tree):

  • Además de binario última capa, las otras capas han alcanzado el número máximo de nodos;
  • Y, la última capa del nodo hoja está presente continuamente de izquierda a derecha, un número de supresiones sólo el nodo hoja derecha;
  • árbol binario perfecto es un árbol binario completo especial;

imagen-20200301093659373

En la figura, ya que la eliminación del nodo hijo derecho H, por lo que no es un árbol binario completo.

2.3. Almacenamiento de datos binarios

La manera más común para almacenar árbol binario matrices y listas enlazadas :

Utilización de matrices:

  • árbol binario completo : de arriba a abajo, de izquierda a manera correcta de almacenar datos.

imagen-20200301094919588

nodo UN si C re mi F sol H
No. 1 2 3 4 5 6 7 8

Cuando se utiliza la matriz de memoria, cuando los datos también es muy fácil de tomar: el número de nodo hijo izquierdo del nodo padre número es igual a 2 *, el número de nodo hijo derecho igual al número nodo padre * 2 + 1.

  • No completa árbol binario : árbol binario no completa árbol binario completo se puede convertir en un programa almacenado de conformidad con lo anterior, este será un desperdicio de una gran cantidad de espacio de almacenamiento.

imagen-20200301100043636

nodo UN si C ^ ^ F ^ ^ ^ ^ ^ ^ METRO
No. 1 2 3 4 5 6 7 8 9 10 11 12 13

Utilice la lista

La forma más común para almacenar el árbol binario es una lista enlazada : cada nodo encapsulado en un nodo, el nodo contiene datos almacenados nodos de referencia izquierda y nodos de referencia adecuados.

imagen-20200301100616105

En tercer lugar, el árbol de búsqueda binaria

3.1 Reconociendo árbol binario de búsqueda

Árbol binario de búsqueda ( BST , árbol de búsqueda binaria), también conocido como árbol de tipo binario y árbol de búsqueda binaria .

Árbol binario de búsqueda es un árbol binario puede estar vacío;

Si no está vacía, entonces las siguientes propiedades :

  • Condición 1: subárbol izquierdo no vacío de todas las teclas menos que las claves de nodos raíz. Tal como tres nodos de todos los no vacío subárbol izquierdo de las teclas 6 son más pequeñas que 6;
  • Condición 2: subárbol derecho no vacío de todas las teclas superiores a la clave raíz, tales como tres nodos de todos los sub-árbol no vacío derecha de las teclas son más grandes que 6 6;
  • Condición 3: La sub-árbol de la izquierda y la derecha en sí son también árboles binarios de búsqueda;

imagen-20200301103139916

Como puede observarse, tres árboles, y dos árboles se reúnen tres condiciones pertenecen árbol binario por lo que no es una condición binaria no está satisfecho 3.

Resumen: Características árbol binario de búsqueda es principalmente valor más pequeño siempre se almacena en el nodo izquierdo , el relativamente gran valor se mantiene siempre en el nodo de la derecha en. Esta característica hace que la eficiencia de la consulta binario árbol de búsqueda es muy alta, lo que es un árbol de búsqueda binaria Fuente "búsqueda".

3.2. Ejemplos de aplicación binaria árbol de búsqueda

El siguiente es un árbol binario de búsqueda:

imagen-20200301111718686

Si desea encontrar datos en la que el 10, sólo para encontrar cuatro veces, la eficiencia de búsqueda es muy alta.

  • Primero: 10 compara el nodo raíz 9, desde el 10 de> 9, por lo que el siguiente paso 10 se compara con el hijo derecho de la raíz 13 9;
  • Segundo: 10 desde el nodo hijo izquierdo <13, 10 de modo que el siguiente nodo padre 13 del comparador 11;
  • Tercero: Desde 10 <11, el siguiente paso 10 el nodo hijo izquierdo y el nodo padre 10 del comparador 11;
  • Cuarto: Desde 10 = 10, 10 es posible encontrar datos.

imagen-20200301111751041La misma es de 15 datos, datos de la consulta en una matriz ordenada 10, necesidad de consulta 10 veces:

imagen-20200301115348138

De hecho: si se ordena la matriz, se pueden encontrar por dos puntos: en primer hallazgo 9, 13 segundo vistazo, la tercera vez para encontrar 15 .... Encontramos que si los datos cada dos minutos para encontrar las palabras para expresar en un árbol es un árbol binario de búsqueda . Esta es la matriz dicotomía para encontrar las razones por las de alta eficiencia.

Referencia: estructuras de datos y algoritmos de JavaScript

Supongo que te gusta

Origin www.cnblogs.com/AhuntSun-blog/p/12446656.html
Recomendado
Clasificación