ESTRUTURA DE DADOS
rvores N-rias
Norton T. Roman & Luciano A. Digiampietri
rvores N-rias
Algumas vezes, a rvore binria no a melhor escolha
Se lidar com grandes volumes de dados, sua
profundidade cresce
Dependendo da modelagem do problema, cada n
precisa ter um nmero variado de filhos, de 0 a n,
com n > 2
rvores N-rias
Que fazer?
rvores N-rias
Que fazer?
Se precisamos de mais filhos, mais filhos o que
teremos rvore n-ria
rvores N-rias
Que fazer?
Se precisamos de mais filhos, mais filhos o que
teremos rvore n-ria
Definio 1: Uma rvore n-ria uma rvore em que
cada n pode ter at n filhos
rvores N-rias
Que fazer?
Se precisamos de mais filhos, mais filhos o que
teremos rvore n-ria
Definio 1: Uma rvore n-ria uma rvore em que
cada n pode ter at n filhos
Definio 2: Uma rvore n-ria uma rvore em que
cada n pode ter um nmero arbitrrio de filhos
rvores N-rias
Trata-se ento de uma generalizao das rvores
binrias
rvores N-rias
Trata-se ento de uma generalizao das rvores
binrias
E qual definio usar?
rvores N-rias
Trata-se ento de uma generalizao das rvores
binrias
E qual definio usar?
A que melhor se adaptar ao problema modelado
rvores N-rias
Trata-se ento de uma generalizao das rvores
binrias
E qual definio usar?
A que melhor se adaptar ao problema modelado
Nessa aula, seguiremos o modelo mais geral,
seguindo a Definio 2
rvores N-rias
Suponha que queremos
modelar a seguinte
rvore:
8
15
20
10
23
28
2
36
rvores N-rias
Suponha que queremos
modelar a seguinte
rvore:
Como seria a
representao do n?
8
15
20
10
23
28
2
36
rvores N-rias
8
15
20
10
23
28
2
36
rvores N-rias
8
15
20
10
23
28
2
36
rvores N-rias
8
15
20
10
23
28
2
36
chave
filho irmo
rvores N-rias
Ento, nossa rvore fica...
8
15
20
10
23
28
2
36
rvores N-rias
Ento, nossa rvore fica...
3000
2200 null
2200
15
20
10
23
28
2
36
3120
1120
15
23
1344 3120
null 1120
112 null
1344
124
112
4432
1244
20
10
28
36
null 1244
null 4432
null null
null 124
null null
rvores N-rias
Veremos cdigo para:
Inicializao
Insero
Exibio
Busca
8
15
20
10
23
28
2
36
rvores N-rias
Antes de mais nada, vamos definir as estruturas
necessrias...
#include <stdio.h>
#include <stdlib.h>
#define true 1
#define false 0
typedef int bool;
typedef int TIPOCHAVE;
typedef struct no {
TIPOCHAVE chave;
/*Aqui vo outros dados*/
struct no *primFilho;
struct no *proxIrmao;
} NO;
typedef NO* PONT;
8
15
20
Sada:
10
23
28
2
36
8
15
20
Sada:
10
23
28
2
36
8
15
20
Sada:
10
23
28
2
36
8
15
20
10
Sada: 8(
23
28
2
36
15
20
10
Sada: 8(
23
28
2
36
15
20
10
Sada: 8(
23
28
2
36
15
20
10
Sada: 8(
23
28
2
36
15
20
10
Sada: 8(
23
28
2
36
15
20
10
Sada: 8(15(
23
28
2
36
15
20
10
Sada: 8(15(
23
28
2
36
15
20
10
Sada: 8(15(
23
28
2
36
15
20
10
Sada: 8(15(
23
28
2
36
15
20
10
Sada: 8(15(
23
28
2
36
15
20
10
23
28
Sada: 8(15(20(
2
36
15
p
p
20
10
23
28
Sada: 8(15(20(
2
36
15
p
p
20
10
23
28
Sada: 8(15(20(
2
36
15
p
p
20
10
23
28
Sada: 8(15(20()
2
36
15
20
10
23
28
Sada: 8(15(20()
2
36
p
p
20
15
10
23
28
Sada: 8(15(20()
2
36
8
15
20
10
23
28
2
36
a busca na
rvores N-rias
E a excluso?
rvores N-rias
E a excluso? A excluso vai depender muito do
contexto em que ela ser usada
rvores N-rias
E a excluso? A excluso vai depender muito do
contexto em que ela ser usada
Pode at nem ser necessria
rvores N-rias
E a excluso? A excluso vai depender muito do
contexto em que ela ser usada
Pode at nem ser necessria
Em especial, temos que decidir o que fazer com os ns
filhos do n excludo
rvores N-rias
E a excluso? A excluso vai depender muito do
contexto em que ela ser usada
Pode at nem ser necessria
Em especial, temos que decidir o que fazer com os ns
filhos do n excludo
Sero adotados por algum? Ou morrem junto?
rvores N-rias
E a excluso? A excluso vai depender muito do
contexto em que ela ser usada
Pode at nem ser necessria
Em especial, temos que decidir o que fazer com os ns
filhos do n excludo
Sero adotados por algum? Ou morrem junto?
uma deciso de projeto... exerccio para voc
AULA 19
ESTRUTURA DE DADOS
rvores N-rias
Norton T. Roman & Luciano A. Digiampietri