índice
1. As características da árvore na vida
2. Simulação em uma estrutura de árvore
Quatro, a terminologia básica da árvore
Cinco, a representação da estrutura da árvore
1. Definição de árvore binária
2. Atributos da árvore binária
3. Cinco formas de árvores binárias
4. A forma especial da árvore binária
5. A estrutura de armazenamento da árvore binária
5.1 Estrutura de armazenamento sequencial
5.2 Estrutura de armazenamento da corrente
1. As características da árvore na vida
A árvore da vida é assim:
- Geralmente tem apenas uma raiz e o tronco da árvore está conectado a ela .
- Existem vários ramos no tronco , que podem ser divididos em vários pequenos ramos .
- Existem várias folhas no final da árvore .
2. Simulação em uma estrutura de árvore
Inverta a árvore acima, cada ramo está conectado a um nó, e cada folha é outro nó, que é a estrutura em árvore em nossa estrutura de dados.
Semelhante à estrutura em árvore são a árvore genealógica, a estrutura organizacional da empresa, a estrutura de conhecimento e assim por diante.
Estrutura abstrata
Três, a definição da árvore
Árvore é um conjunto finito de n (n ≥ 0) nós. É uma árvore vazia (n = 0) ou uma árvore não vazia, para uma árvore não vazia T;
(1) Existe um e apenas um nó chamado raiz.
(2) Os outros nós além do nó raiz podem ser divididos em m (m ≥ 0) conjuntos finitos disjuntos T1, T2, ..., Tm, cada um dos quais é uma árvore, e é chamado de Subárvore Enraizada (Subárvore)
A definição da estrutura da árvore é uma definição recursiva , ou seja, a definição da árvore é útil na definição da árvore.
Quatro, a terminologia básica da árvore
A representação de nós e nós aqui não é contestada, ambos são aceitáveis.
(1) Nó : uma unidade independente na árvore, incluindo um elemento de dados e vários ramos apontando para nós filhos. Nós A ~ K na imagem;
(2) Grau do nó (Grau) : O número de subárvores pertencentes ao nó é chamado de grau do nó. Por exemplo, o grau de A é 4, o grau de E é 1 e o grau de D é 0;
(3) o grau da árvore : o ponto máximo da árvore é o grau de cada nó dentro da árvore. O grau da árvore na figura é 4;
(4) Folha : Um nó com grau 0 é denominado folha ou nó terminal. Por exemplo, F, J, K, H, C, D, I são todas folhas;
(5) Nó pai ou nó pai (pai) : Se um nó contém um nó filho, esse nó é chamado de nó pai de seu nó filho, conforme mostrado na Figura B é o nó pai do ponto F, G, H;
(6) Nó filho ou nó filho (filho) : o nó raiz da subárvore contida em um nó é chamado de nó filho do nó, H é o nó filho de B e F é o nó filho de B ;
(7) Irmãos : os nós com o mesmo nó pai são chamados de nós irmãos, e F e G são nós irmãos;
(8) O nível do nó (Nível) : a partir da definição da raiz, a raiz é o primeiro nível e os subnós da raiz são o segundo nível, e assim por diante; na figura acima, A está localizado no primeiro nível e K está localizado no quarto andar;
(9) A altura ou profundidade da árvore (profundidade) : o nível máximo de nós na árvore; a profundidade da árvore na figura acima é 4;
(10) Nós não terminais ou nós ramificados : nós cujo grau não é 0;
(11) Nó primo : nós com pais no mesmo nível são primos entre si;
(12) Ancestrais de um nó : da raiz a todos os nós na ramificação do nó;
(13) Descendentes : qualquer nó na subárvore com raiz em um determinado nó é chamado de descendente desse nó;
(14) Floresta: Uma coleção de m (m> = 0) árvores disjuntas é chamada de floresta.
Cinco, a representação da estrutura da árvore
- Quando o nó de relacionamento pai-filho da árvore é simulado como um nó de conexão de lista vinculada, ele pode ter a seguinte estrutura
Mas se pensarmos bem, se nos candidatarmos a indicadores de vagas com esse tipo de estupidez, vai ficar muito complicado, quer queiramos candidatar-se a um, dois ou mais, no final, pode não atender realmente às nossas necessidades.
Portanto, esta forma de construir nossa estrutura de árvore não é muito boa.
- Notação filho-irmão
Ao definir um nó, você só precisa incluir três atributos
- this.key : O conteúdo dos dados armazenados. Você também pode armazenar [chave, valor] na forma de pares de valores-chave
- this.left : usado para apontar para a subárvore esquerda.
- this.sibling : usado para apontar para um nó irmão.
Não é difícil descobrir que, quando giramos a estrutura representada pela representação filho-irmão em 45 °, chegamos a uma árvore binária.
Todas as árvores podem ser simuladas como árvores binárias nesta forma
Seis, árvore binária
1. Definição de árvore binária
A árvore binária é uma coleção de n (n ≥ 0) nós. É uma árvore vazia (n = 0) ou uma árvore não vazia, para uma árvore não vazia T;
(1) Existe um e apenas um nó chamado raiz.
(2) Os outros nós além do nó raiz podem ser divididos em dois conjuntos finitos disjuntos T1 e T2, que são chamados de subárvore esquerda e subárvore direita de T respectivamente, e T1 e T2 são ambas árvores binárias.
2. Atributos da árvore binária
(1) Em uma árvore binária não vazia, o número total de nós no i-ésimo nível não excede , i> = 1;
(2) Uma árvore binária com profundidade h tem no máximo um nó (h> = 1), e pelo menos h nós;
(3) Para qualquer árvore binária, se o número de nós folha for N0, e o número total de nós com grau 2 for N2, então N0 = N2 + 1;
- Árvore binária completa : uma árvore binária com profundidade he um nó.
O número de nós em cada camada é o número máximo de nós, ou seja, o número de nós em cada camada i tem o valor máximo
- Árvore Binária Completa : Uma árvore binária com n nós com profundidade k, se e somente se cada nó corresponder a um nó numerado de 1 an em uma árvore binária completa com profundidade k. Chame-a de árvore binária completa.
(1) Os nós de folha só podem aparecer nos dois níveis maiores.
(2) Para qualquer nó, se o nível máximo de descendentes sob seu ramo direito for l, o nível máximo de descendentes sob seu ramo esquerdo deve ser l ou l + 1,
(4) A profundidade de uma árvore binária completa com n nós é (Nota: [] significa arredondamento para baixo)
(5) Se cada nó de uma árvore binária completa com N nós for armazenado de maneira sequencial, a relação entre os nós é a seguinte:
- Se I for o número do nó, se I> 1, então o número de seu nó pai é I / 2;
- Se 2 * I <= N, o número de seu filho esquerdo (ou seja, o nó raiz da subárvore esquerda) é 2 * I; se 2 * I> N, não há filho esquerdo;
- Se 2 * I + 1 <= N, então o número do nó do filho certo é 2 * I + 1; se 2 * I + 1> N, não há filho certo.
(6) Dados N nós, h (N) tipos de árvores binárias diferentes podem ser formados. h (N) é o enésimo termo do número de Cattleya. h (n) = C (2 * n, n) / (n + 1).
(7) Existem i pontos de ramificação, I é o comprimento total da estrada de todos os pontos de ramificação, J é o comprimento total da estrada das folhas J = I + 2i
3. Cinco formas de árvores binárias
4. A forma especial da árvore binária
5. A estrutura de armazenamento da árvore binária
5.1 Estrutura de armazenamento sequencial
Para uma árvore binária completa, armazenamos os elementos na forma de um array e obtemos o seguinte array
Nó |
UMA |
B |
C |
D |
E |
F |
Número de série |
1 |
2 |
3 |
4 |
5 |
6 |
Mas descobrimos que nem todas as árvores binárias podem armazenar os elementos em ordem como uma árvore binária completa, como a seguinte árvore binária
Nó |
UMA |
B |
C |
^ |
D |
E |
^ |
^ |
^ |
^ |
F |
Número de série |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Neste caso, causará muito desperdício de espaço e é mais adequado adotar a seguinte estrutura de armazenamento em cadeia
5.2 Estrutura de armazenamento da corrente
A partir da definição da árvore binária, pode-se ver que o nó da árvore binária é composto por um elemento de dados e duas ramificações apontando para os nós esquerdo e direito, respectivamente, de modo que os nós na lista encadeada que representam a árvore binária devem conter pelo menos três campos.
- data: campo de dados.
- lchild: domínio do ponteiro esquerdo.
- rchild: Campo do ponteiro direito.
Às vezes, para encontrar o pai de um nó, podemos adicionar um campo de ponteiro ao nó pai . A estrutura de armazenamento da árvore binária derivada dessas duas estruturas de nós é chamada de lista vinculada binária e lista vinculada de três pontas, respectivamente.