Los niños han visto el árbol binario de la ciudad, ¿seguro que no quieres venir a echar un vistazo?

Los programadores trabajadores escribirán código en sus sueños, 

La llamada persona está acostada en la cama, la tecnología se eleva naturalmente,

Este número lo llevará a una programación de ensueño,

El contenido es abstracto, por favor tenga su almohada lista.

contenido:

1. El concepto y la estructura del árbol binario.

2. Implementación de la estructura de cadena de árbol binario

1. El concepto y la estructura del árbol binario. 

①Concepto : Un árbol binario es un conjunto finito de nodos , que está vacío o consta de un nodo raíz más dos árboles binarios llamados subárbol izquierdo y subárbol derecho .

②Características del árbol binario :

  • Cada nodo tiene como máximo dos subárboles , es decir, no hay nodos con grado mayor a 2 en un árbol binario. (grados hasta 2)
  • Los subárboles de un árbol binario se dividen en izquierdo y derecho, y el orden de los subárboles no se puede invertir.

 ③ Árbol binario real :

 Cuando una persona común ve un árbol así, puede pensar: un buen árbol estándar

Cuando un programador ve un árbol así, puede pensar: es como un árbol binario en una estructura de datos, y todavía está lleno de árboles binarios.

 ④ Árbol binario en la estructura de datos :

Nota: un árbol binario tiene como máximo dos grados 

Árbol binario especial: 

  • Árbol binario completo: un árbol binario, si el número de nodos en cada capa alcanza el valor máximo, el árbol binario es un árbol binario completo. Es decir, si un árbol binario tiene K niveles y el número total de nodos es (2^k) -1, entonces es un árbol binario completo.
  • Árbol binario completo : un árbol binario completo es una estructura de datos altamente eficiente, y un árbol binario completo se deriva de un árbol binario completo. Para un árbol binario de profundidad K con n nodos, se llama árbol binario completo si y solo si cada nodo del árbol corresponde uno a uno con los nodos numerados del 1 al n en el árbol binario completo de profundidad K. Tenga en cuenta que un árbol binario completo es un tipo especial de árbol binario completo. 

 ⑥ Estructura de almacenamiento del árbol binario: el árbol binario generalmente se puede almacenar en dos estructuras, una estructura secuencial y una estructura en cadena .

 ⑦ Las propiedades del árbol binario:

  • Si el nivel del nodo raíz se especifica como 1, entonces hay como máximo 2^(i-1) nodos en el i-ésimo nivel de un árbol binario no vacío.
  • Si se especifica que el número de niveles del nodo raíz es 1, el número máximo de nodos de un árbol binario con una profundidad de h es 2^h-1.
  • Para cualquier árbol binario, si el número de nodos de hoja de grado 0 es n0 y el número de nodos de rama de grado 2 es n2, entonces n0=n2+1
  • Si el nivel del nodo raíz se especifica como 1, la profundidad de un árbol binario completo con n nodos, h=log₂n+1

Preguntas de ejercicios  

 

  2. Implementación de la estructura de cadena de árbol binario

  ① Recorrido de la estructura de la cadena de árbol binario:

El llamado recorrido (traversal) se refiere a seguir una determinada ruta de búsqueda, y visitar secuencialmente cada nodo del árbol una vez y solo una vez. Las operaciones realizadas por el nodo de acceso dependen del problema específico de la aplicación. El recorrido es una de las operaciones más importantes en un árbol binario y es la base para otras operaciones en un árbol binario.

 Recorrido de estructura recursiva de orden previo/orden medio/posterior: Nombrado de acuerdo con la ubicación donde ocurre la operación del nodo de acceso

  • Preordenar (raíz primero): primero visite el nodo raíz, luego visite el subárbol izquierdo y finalmente visite el subárbol derecho
  • En orden (raíz central): primero visite el nodo izquierdo, luego visite el nodo raíz y finalmente visite el subárbol derecho 
  • Post-orden (post-raíz): primero visite el nodo izquierdo, luego visite el subárbol derecho y finalmente visite el nodo raíz

 Primero defina un tipo de estructura:

typedef char BTDataType;
typedef struct BinarytreeNode
{
	BTDataType data;
	struct BinarytreeNode* left;
	struct BinarytreeNode* right;
}BTNode;

 prólogo:

void Preamble(BTNode* p)//前序
{
	if (p == NULL)
	{
		printf("NULL ");
		return;
	}
	printf("%c ", p->data);
	Preamble(p->left);
	Preamble(p->right);
}

 Secuencia intermedia:

void Morder(BTNode* p)//中序
{
	if (p == NULL)
	{
		printf("NULL ");
		return;
	}
	Morder(p->left);
	printf("%c ", p->data);
	Morder(p->right);
}

Secuencia posterior:

void Porder(BTNode* p)//后序
{
	if (p == NULL)
	{
		printf("NULL ");
		return;
	}
	Porder(p->left);
	Porder(p->right);
	printf("%c ", p->data);
}

 Encuentre el número de nodos en un árbol binario:

int treeSize(BTNode* p)//结点个数
{
	return p == NULL ? 0 : treeSize(p->left) + treeSize(p->right)+1;
}

Encuentre el número de nodos hoja:

int treeLeafSize(BTNode* p)//叶子结点个数
{
	if (p == NULL)
	{
		return 0;
	}
	if (p->left == NULL&&p->right == NULL)
	{
		return 1;
	}

	return treeLeafSize(p->left) + treeLeafSize(p->right);
}

 Eso es todo por este tema. . .

QQ:2186529582

Supongo que te gusta

Origin blog.csdn.net/m0_66488562/article/details/123695367
Recomendado
Clasificación