[Árbol de estructura de datos y árbol binario]
Tabla de contenido:
1. La definición de árbol y árbol binario
(1) Definición de árbol
Un árbol es un conjunto finito de n nodos, es un árbol vacío (n = 0); o un árbol no vacío
(2) Terminología básica
(3) La definición de árbol binario
1. La definición de árbol binario
Un árbol binario es una colección de n (n> = 0) nodos. Es un árbol vacío (n = 0) o un árbol no vacío. Para un árbol no vacío: T
(1) Hay uno y solo uno llamado El nodo de la raíz;
(2) Los nodos distintos del nodo raíz se dividen en dos subconjuntos disjuntos T1 y T2, que se denominan subárbol izquierdo y subárbol derecho de T, y tanto T1 como T2. Es un árbol binario.
2. Las características básicas de los árboles binarios
(1) El grado del nodo es menor o igual a 2;
(2) Árbol ordenado (los subárboles se dividen en izquierda y derecha, y el orden no se puede invertir arbitrariamente)
En segundo lugar, la naturaleza y la estructura de almacenamiento del árbol binario.
(1) La naturaleza del árbol binario
Árbol binario completo: Un árbol binario con una profundidad de K y 2 elevado a la potencia de los nodos K-1. (Característica: cada capa está llena de nodos)
Árbol binario completo: Un árbol binario con una profundidad de K y n nodos, si y solo si cada nodo corresponde al nodo numerado de 1 an en el árbol binario completo con una profundidad de K.
(2) La estructura de almacenamiento del árbol binario
1. Estructura de almacenamiento secuencial
lograr: De acuerdo con el número de nivel de nodo del árbol binario completo, los elementos de datos en el árbol binario se almacenan secuencialmente.
Caracteristicas:
(1) La relación entre los nodos está contenida en su ubicación de almacenamiento;
(2) Un desperdicio de espacio, adecuado para almacenar árboles binarios completos y árboles binarios completos.
Nodo i:
Nodo principal: [i / 2]
Hijo izquierdo: 2i
Hijo derecho: 2i + 1
#define MAXTSIZE 100 //二叉树的最大结点数
typedef TElemType SqBiTree[MAXTSIZE];//0号单元存储根结点
SqBiTree bt;
2. Estructura de almacenamiento en cadena
(1) Lista enlazada binaria
typedef struct BiNode
{
TElemType data; //数据域
struct BiNode* lchild, * rchild; //左右孩子指针
}BiNode,*BiTree; //二叉树结点
BiTree root;
En una lista binaria enlazada de n nodos, hay n + 1 campos de puntero nulo
(2) Lista vinculada de tres puntas
typedef struct TriTNode
{
TElemType data; //数据域
struct TriTNode* lchild,* parent * rchild; //左右孩子指针
}TriTNode,*TriTree; //二叉树结点