Você está na página 1de 113

Estrutura de Dados

Prof. Me. Marcos Alves


marcos@ucdb.br
 Definição: é uma árvore binária tal que, para todo nó p:

90

50 97

34 81 93 99

16 49 95

Estrutura de Dados Prof. Marcos Alves 2


 Definição: é uma árvore binária tal que, para todo nó p:

90

50 97

34 81 93 99

16 49 95

Estrutura de Dados Prof. Marcos Alves 3


 Definição: é uma árvore binária tal que, para todo nó p:

 Todo nó e na sub-árvore à esquerda de p satisfaz  Info(e)  Info(p);

90
e

50 97

34 81 93 99

16 49 95

Estrutura de Dados Prof. Marcos Alves 4


 Definição: é uma árvore binária tal que, para todo nó p:

 Todo nó e na sub-árvore à esquerda de p satisfaz  Info(e)  Info(p);

 Todo nó d na sub-árvore à direita de p satisfaz  Info(p)  Info(d).


p

90
e d

50 97

34 81 93 99

16 49 95

Estrutura de Dados Prof. Marcos Alves 5


Estrutura de Dados Prof. Marcos Alves 6
1. Função para determinar o menor valor em uma árvore binária de busca.

90

50 97

34 81 93 99

16 49 95

Estrutura de Dados Prof. Marcos Alves 7


1. Função para determinar o menor valor em uma árvore binária de busca.

90

50 97

34 81 93 99

16 49 95

Estrutura de Dados Prof. Marcos Alves 8


1. Função para determinar o menor valor em uma árvore binária de busca.

90

50 97

34 81 93 99

16 49 95

Estrutura de Dados Prof. Marcos Alves 9


1. Função para determinar o menor valor em uma árvore binária de busca.

p
90

50 97

34 81 93 99

16 49 95

Estrutura de Dados Prof. Marcos Alves 10


1. Função para determinar o menor valor em uma árvore binária de busca.

90

p 97
50

34 81 93 99

16 49 95

Estrutura de Dados Prof. Marcos Alves 11


1. Função para determinar o menor valor em uma árvore binária de busca.

90

50 97

p 34 81 93 99

16 49 95

Estrutura de Dados Prof. Marcos Alves 12


1. Função para determinar o menor valor em uma árvore binária de busca.
Função minimoABB( noArvore ↑T )

noArvore ↑p;

se T = NULO

então p  NULO;

senão p  T;

enquanto Eprox(p) ≠ NULO faça

p  Eprox(p);

fimEnquanto

fimSe

retorna p;

fimFunção

Estrutura de Dados Prof. Marcos Alves 13


1. Função para determinar o menor valor em uma árvore binária de busca.
Função minimoABB( noArvore ↑T )

noArvore ↑p;

se T = NULO

então p  NULO;

senão p  T;

enquanto Eprox(p) ≠ NULO faça

p  Eprox(p);

fimEnquanto

fimSe

retorna p;

fimFunção

Estrutura de Dados Prof. Marcos Alves 14


1. Função para determinar o menor valor em uma árvore binária de busca.
Função minimoABB( noArvore ↑T )

noArvore ↑p;

se T = NULO

então p  NULO;

senão p  T;

enquanto Eprox(p) ≠ NULO faça

p  Eprox(p);

fimEnquanto

fimSe

retorna p;

fimFunção

Estrutura de Dados Prof. Marcos Alves 15


1. Função para determinar o menor valor em uma árvore binária de busca.
Função minimoABB( noArvore ↑T )

noArvore ↑p;

se T = NULO

então p  NULO;

senão p  T;

enquanto Eprox(p) ≠ NULO faça

p  Eprox(p);

fimEnquanto

fimSe

retorna p;

fimFunção

Estrutura de Dados Prof. Marcos Alves 16


1. Função para determinar o menor valor em uma árvore binária de busca.
Função minimoABB( noArvore ↑T )

noArvore ↑p;

se T = NULO

então p  NULO;

senão p  T;

enquanto Eprox(p) ≠ NULO faça

p  Eprox(p);

fimEnquanto

fimSe

retorna p;

fimFunção

Estrutura de Dados Prof. Marcos Alves 17


1. Função para determinar o menor valor em uma árvore binária de busca.
Função minimoABB( noArvore ↑T )

noArvore ↑p;

se T = NULO

então p  NULO;

senão p  T;

enquanto Eprox(p) ≠ NULO faça

p  Eprox(p);

fimEnquanto

fimSe

retorna p;

fimFunção

Estrutura de Dados Prof. Marcos Alves 18


1. Função para determinar o menor valor em uma árvore binária de busca.
Função minimoABB( noArvore ↑T )

noArvore ↑p;

se T = NULO

então p  NULO;

senão p  T;

enquanto Eprox(p) ≠ NULO faça

p  Eprox(p);

fimEnquanto

fimSe

retorna p;

fimFunção

Estrutura de Dados Prof. Marcos Alves 19


1. Função para determinar o menor valor em uma árvore binária de busca.
Função minimoABB( noArvore ↑T )

noArvore ↑p;

se T = NULO

então p  NULO;

senão p  T;

enquanto Eprox(p) ≠ NULO faça

p  Eprox(p);

fimEnquanto

fimSe

retorna p;

fimFunção

Estrutura de Dados Prof. Marcos Alves 20


1. Função para determinar o menor valor em uma árvore binária de busca.
Função minimoABB( noArvore ↑T )

noArvore ↑p;

se T = NULO

então p  NULO;

senão p  T;

enquanto Eprox(p) ≠ NULO faça

p  Eprox(p);

fimEnquanto

fimSe

retorna p;

fimFunção

Estrutura de Dados Prof. Marcos Alves 21


1. Função para determinar o menor valor em uma árvore binária de busca.
Função minimoABB( noArvore ↑T )

noArvore ↑p;

se T = NULO

então p  NULO;

senão p  T;

enquanto Eprox(p) ≠ NULO faça

p  Eprox(p);

fimEnquanto

fimSe

retorna p;

fimFunção

Estrutura de Dados Prof. Marcos Alves 22


2. Função para localizar um valor x em uma árvore binária de busca.

90

50 97

34 81 93 99

16 49 95

Estrutura de Dados Prof. Marcos Alves 23


2. Função para localizar um valor x em uma árvore binária de busca.

x = 95

90

50 97

34 81 93 99

16 49 95

Estrutura de Dados Prof. Marcos Alves 24


2. Função para localizar um valor x em uma árvore binária de busca.

x = 95
T

90

50 97

34 81 93 99

16 49 95

Estrutura de Dados Prof. Marcos Alves 25


2. Função para localizar um valor x em uma árvore binária de busca.

x = 95
T

90

50 97

34 81 93 99

16 49 95

Estrutura de Dados Prof. Marcos Alves 26


2. Função para localizar um valor x em uma árvore binária de busca.

x = 95

90
T

50 97

34 81 93 99

16 49 95

Estrutura de Dados Prof. Marcos Alves 27


2. Função para localizar um valor x em uma árvore binária de busca.

x = 95

90

50 97
T
34 81 93 99

16 49 95

Estrutura de Dados Prof. Marcos Alves 28


2. Função para localizar um valor x em uma árvore binária de busca.

x = 95

90

50 97

34 81 93 99

T
16 49 95

Estrutura de Dados Prof. Marcos Alves 29


2. Função para localizar um valor x em uma árvore binária de busca.
Função buscaArvoreBinaria( var noArvore ↑T, inteiro x )

se T = NULO

então retorna NULO;

senão se x = Info(T)

então retorna T;

senão se x < Info(T)

então retorna buscaArvoreBinaria(EProx(T), x);

senão retorna buscaArvoreBinaria(DProx(T), x);

fimSe

fimSe

fimSe

fimFunção

Estrutura de Dados Prof. Marcos Alves 30


2. Função para localizar um valor x em uma árvore binária de busca.
Função buscaArvoreBinaria( var noArvore ↑T, inteiro x )

se T = NULO

então retorna NULO;

senão se x = Info(T)

então retorna T;

senão se x < Info(T)

então retorna buscaArvoreBinaria(EProx(T), x);

senão retorna buscaArvoreBinaria(DProx(T), x);

fimSe

fimSe

fimSe

fimFunção

Estrutura de Dados Prof. Marcos Alves 31


2. Função para localizar um valor x em uma árvore binária de busca.
Função buscaArvoreBinaria( var noArvore ↑T, inteiro x )

se T = NULO

então retorna NULO;

senão se x = Info(T)

então retorna T;

senão se x < Info(T)

então retorna buscaArvoreBinaria(EProx(T), x);

senão retorna buscaArvoreBinaria(DProx(T), x);

fimSe

fimSe

fimSe

fimFunção

Estrutura de Dados Prof. Marcos Alves 32


2. Função para localizar um valor x em uma árvore binária de busca.
Função buscaArvoreBinaria( var noArvore ↑T, inteiro x )

se T = NULO

então retorna NULO;

senão se x = Info(T)

então retorna T;

senão se x < Info(T)

então retorna buscaArvoreBinaria(EProx(T), x);

senão retorna buscaArvoreBinaria(DProx(T), x);

fimSe

fimSe

fimSe

fimFunção

Estrutura de Dados Prof. Marcos Alves 33


2. Função para localizar um valor x em uma árvore binária de busca.
Função buscaArvoreBinaria( var noArvore ↑T, inteiro x )

se T = NULO

então retorna NULO;

senão se x = Info(T)

então retorna T;

senão se x < Info(T)

então retorna buscaArvoreBinaria(EProx(T), x);

senão retorna buscaArvoreBinaria(DProx(T), x);

fimSe

fimSe

fimSe

fimFunção

Estrutura de Dados Prof. Marcos Alves 34


2. Função para localizar um valor x em uma árvore binária de busca.
Função buscaArvoreBinaria( var noArvore ↑T, inteiro x )

se T = NULO

então retorna NULO;

senão se x = Info(T)

então retorna T;

senão se x < Info(T)

então retorna buscaArvoreBinaria(EProx(T), x);

senão retorna buscaArvoreBinaria(DProx(T), x);

fimSe

fimSe

fimSe

fimFunção

Estrutura de Dados Prof. Marcos Alves 35


2. Função para localizar um valor x em uma árvore binária de busca.
Função buscaArvoreBinaria( var noArvore ↑T, inteiro x )

se T = NULO

então retorna NULO;

senão se x = Info(T)

então retorna T;

senão se x < Info(T)

então retorna buscaArvoreBinaria(EProx(T), x);

senão retorna buscaArvoreBinaria(DProx(T), x);

fimSe

fimSe

fimSe

fimFunção

Estrutura de Dados Prof. Marcos Alves 36


2. Função para localizar um valor x em uma árvore binária de busca.
Função buscaArvoreBinaria( var noArvore ↑T, inteiro x )

se T = NULO

então retorna NULO;

senão se x = Info(T)

então retorna T;

senão se x < Info(T)

então retorna buscaArvoreBinaria(EProx(T), x);

senão retorna buscaArvoreBinaria(DProx(T), x);

fimSe

fimSe

fimSe

fimFunção

Estrutura de Dados Prof. Marcos Alves 37


2. Função para localizar um valor x em uma árvore binária de busca.
Função buscaArvoreBinaria( var noArvore ↑T, inteiro x )

se T = NULO

então retorna NULO;

senão se x = Info(T)

então retorna T;

senão se x < Info(T)

então retorna buscaArvoreBinaria(EProx(T), x);

senão retorna buscaArvoreBinaria(DProx(T), x);

fimSe

fimSe

fimSe

fimFunção

Estrutura de Dados Prof. Marcos Alves 38


2. Função para localizar um valor x em uma árvore binária de busca.
Função buscaArvoreBinaria( var noArvore ↑T, inteiro x )

se T = NULO

então retorna NULO;

senão se x = Info(T)

então retorna T;

senão se x < Info(T)

então retorna buscaArvoreBinaria(EProx(T), x);

senão retorna buscaArvoreBinaria(DProx(T), x);

fimSe

fimSe

fimSe

fimFunção

Estrutura de Dados Prof. Marcos Alves 39


2. Função para localizar um valor x em uma árvore binária de busca.
Função buscaArvoreBinaria( var noArvore ↑T, inteiro x )

se T = NULO

então retorna NULO;

senão se x = Info(T)

então retorna T;

senão se x < Info(T)

então retorna buscaArvoreBinaria(EProx(T), x);

senão retorna buscaArvoreBinaria(DProx(T), x);

fimSe

fimSe

fimSe

fimFunção

Estrutura de Dados Prof. Marcos Alves 40


3. Função para inserir um valor x em uma árvore binária de busca.

90

50 97

34 81 93 99

16 49 95

Estrutura de Dados Prof. Marcos Alves 41


3. Função para inserir um valor x em uma árvore binária de busca.

x = 85

90

50 97

34 81 93 99

16 49 95

Estrutura de Dados Prof. Marcos Alves 42


3. Função para inserir um valor x em uma árvore binária de busca.

x = 85
T

90

50 97

34 81 93 99

16 49 95

Estrutura de Dados Prof. Marcos Alves 43


3. Função para inserir um valor x em uma árvore binária de busca.

x = 85
T

90

50 97

34 81 93 99

16 49 95

Estrutura de Dados Prof. Marcos Alves 44


3. Função para inserir um valor x em uma árvore binária de busca.

x = 85

90

T
50 97

34 81 93 99

16 49 95

Estrutura de Dados Prof. Marcos Alves 45


3. Função para inserir um valor x em uma árvore binária de busca.

x = 85

90

50 97
T
34 81 93 99

16 49 95

Estrutura de Dados Prof. Marcos Alves 46


3. Função para inserir um valor x em uma árvore binária de busca.

x = 85

90

50 97

34 81 93 99
T

16 49 95

Estrutura de Dados Prof. Marcos Alves 47


3. Função para inserir um valor x em uma árvore binária de busca.

x = 85

90

50 97

34 81 93 99
T

16 49 85 95

Estrutura de Dados Prof. Marcos Alves 48


3. Função para inserir um valor x em uma árvore binária de busca.
Função insereArvoreBinaria( var noArvore ↑T, inteiro x )
se T = NULO
então T  aloca(noArvore);
Info(T)  x;
EProx(T)  NULO;
DProx(T)  NULO;
senão se x < Info(T)
então insereArvoreBinaria(EProx(T), x);
senão se x > Info(T)
então insereArvoreBinaria(DProx(T), x);
senão escreva “Elemento já existe na árvore!”;
fimSe
fimSe
fimSe
fimFunção

Estrutura de Dados Prof. Marcos Alves 49


3. Função para inserir um valor x em uma árvore binária de busca.
Função insereArvoreBinaria( var noArvore ↑T, inteiro x )
se T = NULO
então T  aloca(noArvore);
Info(T)  x;
EProx(T)  NULO;
DProx(T)  NULO;
senão se x < Info(T)
então insereArvoreBinaria(EProx(T), x);
senão se x > Info(T)
então insereArvoreBinaria(DProx(T), x);
senão escreva “Elemento já existe na árvore!”;
fimSe
fimSe
fimSe
fimFunção

Estrutura de Dados Prof. Marcos Alves 50


3. Função para inserir um valor x em uma árvore binária de busca.
Função insereArvoreBinaria( var noArvore ↑T, inteiro x )
se T = NULO
então T  aloca(noArvore);
Info(T)  x;
EProx(T)  NULO;
DProx(T)  NULO;
senão se x < Info(T)
então insereArvoreBinaria(EProx(T), x);
senão se x > Info(T)
então insereArvoreBinaria(DProx(T), x);
senão escreva “Elemento já existe na árvore!”;
fimSe
fimSe
fimSe
fimFunção

Estrutura de Dados Prof. Marcos Alves 51


3. Função para inserir um valor x em uma árvore binária de busca.
Função insereArvoreBinaria( var noArvore ↑T, inteiro x )
se T = NULO
então T  aloca(noArvore);
Info(T)  x;
EProx(T)  NULO;
DProx(T)  NULO;
senão se x < Info(T)
então insereArvoreBinaria(EProx(T), x);
senão se x > Info(T)
então insereArvoreBinaria(DProx(T), x);
senão escreva “Elemento já existe na árvore!”;
fimSe
fimSe
fimSe
fimFunção

Estrutura de Dados Prof. Marcos Alves 52


3. Função para inserir um valor x em uma árvore binária de busca.
Função insereArvoreBinaria( var noArvore ↑T, inteiro x )
se T = NULO
então T  aloca(noArvore);
Info(T)  x;
EProx(T)  NULO;
DProx(T)  NULO;
senão se x < Info(T)
então insereArvoreBinaria(EProx(T), x);
senão se x > Info(T)
então insereArvoreBinaria(DProx(T), x);
senão escreva “Elemento já existe na árvore!”;
fimSe
fimSe
fimSe
fimFunção

Estrutura de Dados Prof. Marcos Alves 53


3. Função para inserir um valor x em uma árvore binária de busca.
Função insereArvoreBinaria( var noArvore ↑T, inteiro x )
se T = NULO
então T  aloca(noArvore);
Info(T)  x;
EProx(T)  NULO;
DProx(T)  NULO;
senão se x < Info(T)
então insereArvoreBinaria(EProx(T), x);
senão se x > Info(T)
então insereArvoreBinaria(DProx(T), x);
senão escreva “Elemento já existe na árvore!”;
fimSe
fimSe
fimSe
fimFunção

Estrutura de Dados Prof. Marcos Alves 54


3. Função para inserir um valor x em uma árvore binária de busca.
Função insereArvoreBinaria( var noArvore ↑T, inteiro x )
se T = NULO
então T  aloca(noArvore);
Info(T)  x;
EProx(T)  NULO;
DProx(T)  NULO;
senão se x < Info(T)
então insereArvoreBinaria(EProx(T), x);
senão se x > Info(T)
então insereArvoreBinaria(DProx(T), x);
senão escreva “Elemento já existe na árvore!”;
fimSe
fimSe
fimSe
fimFunção

Estrutura de Dados Prof. Marcos Alves 55


3. Função para inserir um valor x em uma árvore binária de busca.
Função insereArvoreBinaria( var noArvore ↑T, inteiro x )
se T = NULO
então T  aloca(noArvore);
Info(T)  x;
EProx(T)  NULO;
DProx(T)  NULO;
senão se x < Info(T)
então insereArvoreBinaria(EProx(T), x);
senão se x > Info(T)
então insereArvoreBinaria(DProx(T), x);
senão escreva “Elemento já existe na árvore!”;
fimSe
fimSe
fimSe
fimFunção

Estrutura de Dados Prof. Marcos Alves 56


3. Função para inserir um valor x em uma árvore binária de busca.
Função insereArvoreBinaria( var noArvore ↑T, inteiro x )
se T = NULO
então T  aloca(noArvore);
Info(T)  x;
EProx(T)  NULO;
DProx(T)  NULO;
senão se x < Info(T)
então insereArvoreBinaria(EProx(T), x);
senão se x > Info(T)
então insereArvoreBinaria(DProx(T), x);
senão escreva “Elemento já existe na árvore!”;
fimSe
fimSe
fimSe
fimFunção

Estrutura de Dados Prof. Marcos Alves 57


3. Função para inserir um valor x em uma árvore binária de busca.
Função insereArvoreBinaria( var noArvore ↑T, inteiro x )
se T = NULO
então T  aloca(noArvore);
Info(T)  x;
EProx(T)  NULO;
DProx(T)  NULO;
senão se x < Info(T)
então insereArvoreBinaria(EProx(T), x);
senão se x > Info(T)
então insereArvoreBinaria(DProx(T), x);
senão escreva “Elemento já existe na árvore!”;
fimSe
fimSe
fimSe
fimFunção

Estrutura de Dados Prof. Marcos Alves 58


3. Função para inserir um valor x em uma árvore binária de busca.
Função insereArvoreBinaria( var noArvore ↑T, inteiro x )
se T = NULO
então T  aloca(noArvore);
Info(T)  x;
EProx(T)  NULO;
DProx(T)  NULO;
senão se x < Info(T)
então insereArvoreBinaria(EProx(T), x);
senão se x > Info(T)
então insereArvoreBinaria(DProx(T), x);
senão escreva “Elemento já existe na árvore!”;
fimSe
fimSe
fimSe
fimFunção

Estrutura de Dados Prof. Marcos Alves 59


3. Função para inserir um valor x em uma árvore binária de busca.
Função insereArvoreBinaria( var noArvore ↑T, inteiro x )
se T = NULO
então T  aloca(noArvore);
Info(T)  x;
EProx(T)  NULO;
DProx(T)  NULO;
senão se x < Info(T)
então insereArvoreBinaria(EProx(T), x);
senão se x > Info(T)
então insereArvoreBinaria(DProx(T), x);
senão escreva “Elemento já existe na árvore!”;
fimSe
fimSe
fimSe
fimFunção

Estrutura de Dados Prof. Marcos Alves 60


3. Função para inserir um valor x em uma árvore binária de busca.
Função insereArvoreBinaria( var noArvore ↑T, inteiro x )
se T = NULO
então T  aloca(noArvore);
Info(T)  x;
EProx(T)  NULO;
DProx(T)  NULO;
senão se x < Info(T)
então insereArvoreBinaria(EProx(T), x);
senão se x > Info(T)
então insereArvoreBinaria(DProx(T), x);
senão escreva “Elemento já existe na árvore!”;
fimSe
fimSe
fimSe
fimFunção

Estrutura de Dados Prof. Marcos Alves 61


3. Função para inserir um valor x em uma árvore binária de busca.
Função insereArvoreBinaria( var noArvore ↑T, inteiro x )
se T = NULO
então T  aloca(noArvore);
Info(T)  x;
EProx(T)  NULO;
DProx(T)  NULO;
senão se x < Info(T)
então insereArvoreBinaria(EProx(T), x);
senão se x > Info(T)
então insereArvoreBinaria(DProx(T), x);
senão escreva “Elemento já existe na árvore!”;
fimSe
fimSe
fimSe
fimFunção

Estrutura de Dados Prof. Marcos Alves 62


3. Função para remover um valor x em uma árvore binária de busca.

50

15 70

10 33 61 99

12 80

11 14 88

Estrutura de Dados Prof. Marcos Alves 63


3. Função para remover um valor x em uma árvore binária de busca.
 Existem três situações:

50

15 70

10 33 61 99

12 80

11 14 88

Estrutura de Dados Prof. Marcos Alves 64


3. Função para remover um valor x em uma árvore binária de busca.
 Existem três situações:
1) O nó a ser removido é uma folha;
50

15 70

10 33 61 99

12 80

11 14 88

Estrutura de Dados Prof. Marcos Alves 65


3. Função para remover um valor x em uma árvore binária de busca.
 Existem três situações:
1) O nó a ser removido é uma folha;
50
2) O nó a ser removido tem apenas um filho;

15 70

10 33 61 99

12 80

11 14 88

Estrutura de Dados Prof. Marcos Alves 66


3. Função para remover um valor x em uma árvore binária de busca.
 Existem três situações:
1) O nó a ser removido é uma folha;
50
2) O nó a ser removido tem apenas um filho;

3) O nó a ser removido tem dois filhos.


15 70

10 33 61 99

12 80

11 14 88

Estrutura de Dados Prof. Marcos Alves 67


3. Função para remover um valor x em uma árvore binária de busca.
 Existem três situações:
1) O nó a ser removido é uma folha;
50
2) O nó a ser removido tem apenas um filho;

3) O nó a ser removido tem dois filhos.


15 70

10 33 61 99

12 80

11 14 88

Estrutura de Dados Prof. Marcos Alves 68


3. Função para remover um valor x em uma árvore binária de busca.

1) O nó a ser removido é uma folha;

50

15 70

10 33 61 99

12 80
P T

11 14 88

Estrutura de Dados Prof. Marcos Alves 69


3. Função para remover um valor x em uma árvore binária de busca.

1) O nó a ser removido é uma folha;

50

15 70

10 33 61 99

12 80
T
P
14 88
11

Estrutura de Dados Prof. Marcos Alves 70


3. Função para remover um valor x em uma árvore binária de busca.

1) O nó a ser removido é uma folha;

50

15 70

10 33 61 99

12 80
T
P
14 88
11

Estrutura de Dados Prof. Marcos Alves 71


3. Função para remover um valor x em uma árvore binária de busca.

1) O nó a ser removido é uma folha;

50

15 70

10 33 61 99

12 80
T
P
14 88
11

Estrutura de Dados Prof. Marcos Alves 72


3. Função para remover um valor x em uma árvore binária de busca.

2) O nó a ser removido tem apenas um filho;

50

15 70
T
P

10 33 61 99

12 80

14 88

Estrutura de Dados Prof. Marcos Alves 73


3. Função para remover um valor x em uma árvore binária de busca.

2) O nó a ser removido tem apenas um filho;

50

T 15 70
P

10 33 61 99

12 80

14 88

Estrutura de Dados Prof. Marcos Alves 74


3. Função para remover um valor x em uma árvore binária de busca.

2) O nó a ser removido tem apenas um filho;

50

15 70
T
P

10 33 61 99

12 80

14 88

Estrutura de Dados Prof. Marcos Alves 75


3. Função para remover um valor x em uma árvore binária de busca.

2) O nó a ser removido tem apenas um filho;

50

15 70
T
P

10 33 61 99

12 80

14 88

Estrutura de Dados Prof. Marcos Alves 76


3. Função para remover um valor x em uma árvore binária de busca.

2) O nó a ser removido tem apenas um filho;

50

15 70
P
T 33 61 99
10

12 80

14 88

Estrutura de Dados Prof. Marcos Alves 77


3. Função para remover um valor x em uma árvore binária de busca.

3) O nó a ser removido tem dois filhos.

50
T P

15 70

33 61 99

12 80

14 88

Estrutura de Dados Prof. Marcos Alves 78


3. Função para remover um valor x em uma árvore binária de busca.

3) O nó a ser removido tem dois filhos.

50
T
R
15 70

33 61 99
P

12 80

14 88

Estrutura de Dados Prof. Marcos Alves 79


3. Função para remover um valor x em uma árvore binária de busca.

3) O nó a ser removido tem dois filhos.

50
T
R
15 80

33 61 99
P

12 80

14 88

Estrutura de Dados Prof. Marcos Alves 80


3. Função para remover um valor x em uma árvore binária de busca.

3) O nó a ser removido tem dois filhos.

50
T
R
15 80

33 61 99
P

12 80

14 88

Estrutura de Dados Prof. Marcos Alves 81


3. Função para remover um valor x em uma árvore binária de busca.

3) O nó a ser removido tem dois filhos.

50
T
R
15 80

33 61 99

P
12
80

14 88

Estrutura de Dados Prof. Marcos Alves 82


3. Função para remover um valor x em uma árvore binária de busca.

3) O nó a ser removido tem dois filhos.

50
T
R
15 80

33 61 99

P
12
80

14 88

Estrutura de Dados Prof. Marcos Alves 83


3. Função para remover um valor x em uma árvore binária de busca.

3) O nó a ser removido tem dois filhos.

50
T
R
15 80

33 61 99

P
12
80

14 88

Estrutura de Dados Prof. Marcos Alves 84


3. Função para remover um valor x em uma árvore binária de busca.

3) O nó a ser removido tem dois filhos.

50
T
R
15 80

33 61 99

P
12
80

14 88

Estrutura de Dados Prof. Marcos Alves 85


3. Função para remover um valor x em uma árvore binária de busca.

3) O nó a ser removido tem dois filhos.

50
T
R
15 80

33 61 99

P
12
80

14 88

Estrutura de Dados Prof. Marcos Alves 86


3. Função para remover um valor x em uma árvore binária de busca.

3) O nó a ser removido tem dois filhos.

50

15 80

33 61 99

12

14 88

Estrutura de Dados Prof. Marcos Alves 87


3. Função para remover um valor x em uma árvore binária de busca.

3) O nó a ser removido tem dois filhos.

50

15 80

33 61 99

12

14 88

Estrutura de Dados Prof. Marcos Alves 88


3. Função para remover um valor x em uma árvore binária de busca.
Função removeArvoreBinaria( var noArvore ↑T, inteiro x )

Estrutura de Dados Prof. Marcos Alves 89


3. Função para remover um valor x em uma árvore binária de busca.
Função removeArvoreBinaria( var noArvore ↑T, inteiro x )
1
se T ≠ NULO então enquanto EProx(P) ≠ NULO faça
se x < Info(T) então R  P;
removeArvoreBinaria(EProx(T), x); P  EProx(P);
senão se x > Info(T) então fimEnquanto
removeArvoreBinaria(DProx(T), x); Info(T)  Info(P);
se T = R
senão // x foi encontrado então DProx(R)  DProx(P);
noArvore ↑P; senão EProx(R)  Dprox(P);
P  T; fimSe
se DProx(P) = NULO então fimSe
T  Eprox(P); fimSe
senão se Eprox(P) = NULO então fimSe
T  DProx(P); fimFunção
senão
noArvore ↑P;
R  P;
P  Dprox(P);
1
Estrutura de Dados Prof. Marcos Alves 90
3. Função para remover um valor x em uma árvore binária de busca.
Função removeArvoreBinaria( var noArvore ↑T, inteiro x )
1
se T ≠ NULO então 2 enquanto EProx(P) ≠ NULO faça
se x < Info(T) então R  P;
removeArvoreBinaria(EProx(T), x); P  EProx(P);
senão se x > Info(T) então fimEnquanto
removeArvoreBinaria(DProx(T), x); Info(T)  Info(P);
senão // x foi encontrado se T = R
noArvore ↑P; então DProx(R)  DProx(P);
P  T; senão EProx(R)  Dprox(P);
se DProx(P) = NULO então fimSe
T  Eprox(P); fimSe
senão se Eprox(P) = NULO então fimSe
T  DProx(P); fimSe
senão fimFunção
noArvore ↑P;
R  P;
P  Dprox(P);

1
2
Estrutura de Dados Prof. Marcos Alves 91
3. Função para remover um valor x em uma árvore binária de busca.
Função removeArvoreBinaria( var noArvore ↑T, inteiro x )
1 3
se T ≠ NULO então 2 enquanto EProx(P) ≠ NULO faça
se x < Info(T) então R  P;
removeArvoreBinaria(EProx(T), x); P  EProx(P);
senão se x > Info(T) então fimEnquanto
removeArvoreBinaria(DProx(T), x); Info(T)  Info(P);
senão // x foi encontrado se T = R
noArvore ↑P; então DProx(R)  DProx(P);
P  T; senão EProx(R)  Dprox(P);
se DProx(P) = NULO então fimSe
T  Eprox(P); fimSe
senão se Eprox(P) = NULO então fimSe
T  DProx(P); fimSe
senão fimFunção
noArvore ↑P;
R  P;
P  Dprox(P);

1 3
2
Estrutura de Dados Prof. Marcos Alves 92
3. Função para remover um valor x em uma árvore binária de busca.
Função removeArvoreBinaria( var noArvore ↑T, inteiro x )
1 3
se T ≠ NULO então 2 enquanto EProx(P) ≠ NULO faça
se x < Info(T) então R  P;
removeArvoreBinaria(EProx(T), x); P  EProx(P);
senão se x > Info(T) então fimEnquanto
removeArvoreBinaria(DProx(T), x); Info(T)  Info(P);
senão // x foi encontrado se T = R
noArvore ↑P; então DProx(R)  DProx(P);
P  T; senão EProx(R)  Dprox(P);
se DProx(P) = NULO então fimSe
T  Eprox(P); fimSe
senão se Eprox(P) = NULO então fimSe
T  DProx(P); fimSe
senão fimFunção
noArvore ↑P;
R  P;
P  Dprox(P);

1 3
2
Estrutura de Dados Prof. Marcos Alves 93
3. Função para remover um valor x em uma árvore binária de busca.
Função removeArvoreBinaria( var noArvore ↑T, inteiro x )
1 3
se T ≠ NULO então 2 enquanto EProx(P) ≠ NULO faça
se x < Info(T) então R  P;
removeArvoreBinaria(EProx(T), x); P  EProx(P);
senão se x > Info(T) então fimEnquanto
removeArvoreBinaria(DProx(T), x); Info(T)  Info(P);
senão // x foi encontrado se T = R
noArvore ↑P; então DProx(R)  DProx(P);
P  T; senão EProx(R)  Dprox(P);
se DProx(P) = NULO então fimSe
T  Eprox(P); fimSe
senão se Eprox(P) = NULO então fimSe
T  DProx(P); fimSe
senão fimFunção
noArvore ↑P;
R  P;
P  Dprox(P);

1 3
2
Estrutura de Dados Prof. Marcos Alves 94
3. Função para remover um valor x em uma árvore binária de busca.
Função removeArvoreBinaria( var noArvore ↑T, inteiro x )
1 3
se T ≠ NULO então 2 enquanto EProx(P) ≠ NULO faça
se x < Info(T) então R  P;
removeArvoreBinaria(EProx(T), x); P  EProx(P);
senão se x > Info(T) então fimEnquanto
removeArvoreBinaria(DProx(T), x); Info(T)  Info(P);
senão // x foi encontrado se T = R
noArvore ↑P; então DProx(R)  DProx(P);
P  T; senão EProx(R)  Dprox(P);
se DProx(P) = NULO então fimSe
T  Eprox(P); fimSe
senão se Eprox(P) = NULO então fimSe
T  DProx(P); fimSe
senão fimFunção
noArvore ↑P;
R  P;
P  Dprox(P);

1 3
2
Estrutura de Dados Prof. Marcos Alves 95
3. Função para remover um valor x em uma árvore binária de busca.
Função removeArvoreBinaria( var noArvore ↑T, inteiro x )
1 3
se T ≠ NULO então 2 enquanto EProx(P) ≠ NULO faça
se x < Info(T) então R  P;
removeArvoreBinaria(EProx(T), x); P  EProx(P);
senão se x > Info(T) então fimEnquanto
removeArvoreBinaria(DProx(T), x); Info(T)  Info(P);
senão // x foi encontrado se T = R
noArvore ↑P; então DProx(R)  DProx(P);
P  T; senão EProx(R)  Dprox(P);
se DProx(P) = NULO então fimSe
T  Eprox(P); fimSe
senão se Eprox(P) = NULO então fimSe
T  DProx(P); fimSe
senão fimFunção
noArvore ↑P;
R  P;
P  Dprox(P);

1 3
2
Estrutura de Dados Prof. Marcos Alves 96
3. Função para remover um valor x em uma árvore binária de busca.
Função removeArvoreBinaria( var noArvore ↑T, inteiro x )
1 3
se T ≠ NULO então 2 enquanto EProx(P) ≠ NULO faça
se x < Info(T) então R  P;
removeArvoreBinaria(EProx(T), x); P  EProx(P);
senão se x > Info(T) então fimEnquanto
removeArvoreBinaria(DProx(T), x); Info(T)  Info(P);
senão // x foi encontrado se T = R
noArvore ↑P; então DProx(R)  DProx(P);
P  T; senão EProx(R)  Dprox(P);
se DProx(P) = NULO então fimSe
T  Eprox(P); fimSe
senão se Eprox(P) = NULO então fimSe
T  DProx(P); fimSe
senão fimFunção
noArvore ↑P;
R  P;
P  Dprox(P);

1 3
2
Estrutura de Dados Prof. Marcos Alves 97
3. Função para remover um valor x em uma árvore binária de busca.
Função removeArvoreBinaria( var noArvore ↑T, inteiro x )
1 3
se T ≠ NULO então 2 enquanto EProx(P) ≠ NULO faça
se x < Info(T) então R  P;
removeArvoreBinaria(EProx(T), x); P  EProx(P);
senão se x > Info(T) então fimEnquanto
removeArvoreBinaria(DProx(T), x); Info(T)  Info(P);
senão // x foi encontrado se T = R
noArvore ↑P; então DProx(R)  DProx(P);
P  T; senão EProx(R)  Dprox(P);
se DProx(P) = NULO então fimSe
T  Eprox(P); fimSe
senão se Eprox(P) = NULO então fimSe
T  DProx(P); fimSe
senão fimFunção
noArvore ↑P;
R  P;
P  Dprox(P);

1 3
2
Estrutura de Dados Prof. Marcos Alves 98
3. Função para remover um valor x em uma árvore binária de busca.
Função removeArvoreBinaria( var noArvore ↑T, inteiro x )
1 3
se T ≠ NULO então 2 enquanto EProx(P) ≠ NULO faça
se x < Info(T) então R  P;
removeArvoreBinaria(EProx(T), x); P  EProx(P);
senão se x > Info(T) então fimEnquanto
removeArvoreBinaria(DProx(T), x); Info(T)  Info(P);
senão // x foi encontrado se T = R
noArvore ↑P; então DProx(R)  DProx(P);
P  T; senão EProx(R)  Dprox(P);
se DProx(P) = NULO então fimSe
T  Eprox(P); fimSe
senão se Eprox(P) = NULO então fimSe
T  DProx(P); fimSe
senão fimFunção
noArvore ↑P; 12
R  P; P T
P  Dprox(P);
11 14
1 3
2
Estrutura de Dados Prof. Marcos Alves 99
3. Função para remover um valor x em uma árvore binária de busca.
Função removeArvoreBinaria( var noArvore ↑T, inteiro x )
1 3
se T ≠ NULO então 2 enquanto EProx(P) ≠ NULO faça
se x < Info(T) então R  P;
removeArvoreBinaria(EProx(T), x); P  EProx(P);
senão se x > Info(T) então fimEnquanto
removeArvoreBinaria(DProx(T), x); Info(T)  Info(P);
senão // x foi encontrado se T = R
noArvore ↑P; então DProx(R)  DProx(P);
P  T; senão EProx(R)  Dprox(P);
se DProx(P) = NULO então fimSe
T  Eprox(P); fimSe
senão se Eprox(P) = NULO então fimSe
T  DProx(P); fimSe
senão fimFunção
noArvore ↑P; 12
R  P; P T
P  Dprox(P);
11 14
1 3
2
Estrutura de Dados Prof. Marcos Alves 100
3. Função para remover um valor x em uma árvore binária de busca.
Função removeArvoreBinaria( var noArvore ↑T, inteiro x )
1 3
se T ≠ NULO então 2 enquanto EProx(P) ≠ NULO faça
se x < Info(T) então R  P;
removeArvoreBinaria(EProx(T), x); P  EProx(P);
senão se x > Info(T) então fimEnquanto
removeArvoreBinaria(DProx(T), x); Info(T)  Info(P);
senão // x foi encontrado se T = R
15
noArvore ↑P; então DProx(R) T DProx(P);
P  T; senãoP EProx(R)  Dprox(P);
se DProx(P) = NULO então fimSe
T  Eprox(P); fimSe 10 33
senão se Eprox(P) = NULO então fimSe
T  DProx(P); fimSe
senão fimFunção
noArvore ↑P; 12
R  P;
P  Dprox(P);
14
1 3
2
Estrutura de Dados Prof. Marcos Alves 101
3. Função para remover um valor x em uma árvore binária de busca.
Função removeArvoreBinaria( var noArvore ↑T, inteiro x )
1 3
se T ≠ NULO então 2 enquanto EProx(P) ≠ NULO faça
se x < Info(T) então R  P;
removeArvoreBinaria(EProx(T), x); P  EProx(P);
senão se x > Info(T) então fimEnquanto
removeArvoreBinaria(DProx(T), x); Info(T)  Info(P);
senão // x foi encontrado se T = R
15
noArvore ↑P; então DProx(R)  DProx(P);
P  T; P
senão EProx(R)  Dprox(P);
se DProx(P) = NULO então fimSe
T  Eprox(P); fimSe T 33
senão se Eprox(P) = NULO então fimSe
10
T  DProx(P); fimSe
senão fimFunção
noArvore ↑P; 12
R  P;
P  Dprox(P);
14
1 3
2
Estrutura de Dados Prof. Marcos Alves 102
3. Função para remover um valor x em uma árvore binária de busca.
Função removeArvoreBinaria( var noArvore ↑T, inteiro x )
1 3
se T ≠ NULO então 2 4 enquanto EProx(P) ≠ NULO faça
se x < Info(T) então R  P;
removeArvoreBinaria(EProx(T), x); P  EProx(P);
senão se x > Info(T) então fimEnquanto
removeArvoreBinaria(DProx(T), x); Info(T)  Info(P);
senão // x foi encontrado se T = R
noArvore ↑P; então DProx(R)  DProx(P);
P  T; senão EProx(R)  Dprox(P);
se DProx(P) = NULO então fimSe
T  Eprox(P); fimSe
senão se Eprox(P) = NULO então fimSe
T  DProx(P); fimSe
senão fimFunção
noArvore ↑P;
R  P;
P  Dprox(P);

1 3
2 4
Estrutura de Dados Prof. Marcos Alves 103
3. Função para remover um valor x em uma árvore binária de busca.
Função removeArvoreBinaria( var noArvore ↑T, inteiro x )
1 3
se T ≠ NULO então 2 4 enquanto EProx(P) ≠ NULO faça
se x < Info(T) então R  P;
removeArvoreBinaria(EProx(T), x); P  EProx(P);
senão se x > Info(T) então fimEnquanto
removeArvoreBinaria(DProx(T), x); Info(T)  Info(P);
senão // x foi encontrado se T = R
noArvore ↑P; então DProx(R)  DProx(P); P
P  T; senão EProx(R)50  Dprox(P);
se DProx(P) = NULO então fimSe
T
T  Eprox(P); fimSe
70
senão se Eprox(P) = NULO então fimSe
T  DProx(P); fimSe
senão fimFunção 61 99

noArvore ↑R;
R  P;
P  Dprox(P); 80

1 3 88

2 4
Estrutura de Dados Prof. Marcos Alves 104
3. Função para remover um valor x em uma árvore binária de busca.
Função removeArvoreBinaria( var noArvore ↑T, inteiro x )
1 3
se T ≠ NULO então 2 4 enquanto EProx(P) ≠ NULO faça
se x < Info(T) então R  P;
removeArvoreBinaria(EProx(T), x); P  EProx(P);
senão se x > Info(T) então fimEnquanto
removeArvoreBinaria(DProx(T), x); Info(T)  Info(P);
senão // x foi encontrado se T = R
noArvore ↑P; então DProx(R)  DProx(P); R
P  T; senão EProx(R)50  Dprox(P);
se DProx(P) = NULO então fimSe
T
T  Eprox(P); fimSe
70
senão se Eprox(P) = NULO então fimSe
T  DProx(P); fimSe
senão fimFunção 61 99

noArvore ↑R;
R  P;
P  Dprox(P); 80

1 3 88

2 4
Estrutura de Dados Prof. Marcos Alves 105
3. Função para remover um valor x em uma árvore binária de busca.
Função removeArvoreBinaria( var noArvore ↑T, inteiro x )
1 3
se T ≠ NULO então 2 4 enquanto EProx(P) ≠ NULO faça
se x < Info(T) então R  P;
removeArvoreBinaria(EProx(T), x); P  EProx(P);
senão se x > Info(T) então fimEnquanto
removeArvoreBinaria(DProx(T), x); Info(T)  Info(P);
senão // x foi encontrado se T = R
noArvore ↑P; então DProx(R)  DProx(P); R
P  T; senão EProx(R)50  Dprox(P);
se DProx(P) = NULO então fimSe
T
T  Eprox(P); fimSe P
70
senão se Eprox(P) = NULO então fimSe
T  DProx(P); fimSe
senão fimFunção 61 99

noArvore ↑R;
R  P;
P  Dprox(P); 80

1 3 88

2 4
Estrutura de Dados Prof. Marcos Alves 106
3. Função para remover um valor x em uma árvore binária de busca.
Função removeArvoreBinaria( var noArvore ↑T, inteiro x )
1 3
se T ≠ NULO então 2 4 enquanto EProx(P) ≠ NULO faça
se x < Info(T) então R  P;
removeArvoreBinaria(EProx(T), x); P  EProx(P);
senão se x > Info(T) então fimEnquanto
removeArvoreBinaria(DProx(T), x); Info(T)  Info(P);
senão // x foi encontrado se T = R
noArvore ↑P; então DProx(R)  DProx(P); R
P  T; senão EProx(R)50  Dprox(P);
se DProx(P) = NULO então fimSe
T
T  Eprox(P); fimSe P
70
senão se Eprox(P) = NULO então fimSe
T  DProx(P); fimSe
senão fimFunção 61 99

noArvore ↑R;
R  P;
P  Dprox(P); 80

1 3 88

2 4
Estrutura de Dados Prof. Marcos Alves 107
3. Função para remover um valor x em uma árvore binária de busca.
Função removeArvoreBinaria( var noArvore ↑T, inteiro x )
1 3
se T ≠ NULO então 2 4 enquanto EProx(P) ≠ NULO faça
se x < Info(T) então R  P;
removeArvoreBinaria(EProx(T), x); P  EProx(P);
senão se x > Info(T) então fimEnquanto
removeArvoreBinaria(DProx(T), x); Info(T)  Info(P);
senão // x foi encontrado se T = R
noArvore ↑P; então DProx(R)  DProx(P);
P  T; senão EProx(R)50  Dprox(P);
se DProx(P) = NULO então fimSe
T
T  Eprox(P); fimSe
R
70
senão se Eprox(P) = NULO então fimSe
T  DProx(P); fimSe
senão fimFunção 61 99

noArvore ↑R;
R  P;
P  Dprox(P); 80

P
1 3 88

2 4
Estrutura de Dados Prof. Marcos Alves 108
3. Função para remover um valor x em uma árvore binária de busca.
Função removeArvoreBinaria( var noArvore ↑T, inteiro x )
1 3
se T ≠ NULO então 2 4 enquanto EProx(P) ≠ NULO faça
se x < Info(T) então R  P;
removeArvoreBinaria(EProx(T), x); P  EProx(P);
senão se x > Info(T) então fimEnquanto
removeArvoreBinaria(DProx(T), x); Info(T)  Info(P);
senão // x foi encontrado se T = R
noArvore ↑P; então DProx(R)  DProx(P);
P  T; senão EProx(R)50  Dprox(P);
se DProx(P) = NULO então fimSe
T
T  Eprox(P); fimSe
R
70
senão se Eprox(P) = NULO então fimSe
T  DProx(P); fimSe
senão fimFunção 61 99

noArvore ↑R;
P
R  P;
P  Dprox(P); 80

1 3 88

2 4
Estrutura de Dados Prof. Marcos Alves 109
3. Função para remover um valor x em uma árvore binária de busca.
Função removeArvoreBinaria( var noArvore ↑T, inteiro x )
1 3
se T ≠ NULO então 2 4 enquanto EProx(P) ≠ NULO faça
se x < Info(T) então R  P;
removeArvoreBinaria(EProx(T), x); P  EProx(P);
senão se x > Info(T) então fimEnquanto
removeArvoreBinaria(DProx(T), x); Info(T)  Info(P);
senão // x foi encontrado se T = R
noArvore ↑P; então DProx(R)  DProx(P);
P  T; senão EProx(R)50  Dprox(P);
se DProx(P) = NULO então fimSe
T
T  Eprox(P); fimSe
R
80
senão se Eprox(P) = NULO então fimSe
T  DProx(P); fimSe
senão fimFunção 61 99

noArvore ↑R;
P
R  P;
P  Dprox(P); 80

1 3 88

2 4
Estrutura de Dados Prof. Marcos Alves 110
3. Função para remover um valor x em uma árvore binária de busca.
Função removeArvoreBinaria( var noArvore ↑T, inteiro x )
1 3
se T ≠ NULO então 2 4 enquanto EProx(P) ≠ NULO faça
se x < Info(T) então R  P;
removeArvoreBinaria(EProx(T), x); P  EProx(P);
senão se x > Info(T) então fimEnquanto
removeArvoreBinaria(DProx(T), x); Info(T)  Info(P);
senão // x foi encontrado se T = R
noArvore ↑P; então DProx(R)  DProx(P);
P  T; senão EProx(R)  Dprox(P);
se DProx(P) = NULO então fimSe R
T  Eprox(P); fimSe 50
T
senão se Eprox(P) = NULO então fimSe P
T  DProx(P); fimSe 80
senão fimFunção
noArvore ↑R;
R  P; 61 80

P  Dprox(P);

1 3 99
2 4
Estrutura de Dados Prof. Marcos Alves 111
3. Função para remover um valor x em uma árvore binária de busca.
Função removeArvoreBinaria( var noArvore ↑T, inteiro x )
1 3
se T ≠ NULO então 2 4 enquanto EProx(P) ≠ NULO faça
se x < Info(T) então R  P;
removeArvoreBinaria(EProx(T), x); P  EProx(P);
senão se x > Info(T) então fimEnquanto
removeArvoreBinaria(DProx(T), x); Info(T)  Info(P);
senão // x foi encontrado se T = R
noArvore ↑P; então DProx(R)  DProx(P);
P  T; senão EProx(R)  Dprox(P);
se DProx(P) = NULO então fimSe R
T  Eprox(P); fimSe 50
T
senão se Eprox(P) = NULO então fimSe
T  DProx(P); fimSe 80
senão fimFunção
noArvore ↑R;
R  P; 61
P
P  Dprox(P);

1 3 80
99
2 4
Estrutura de Dados Prof. Marcos Alves 112
3. Função para remover um valor x em uma árvore binária de busca.
Função removeArvoreBinaria( var noArvore ↑T, inteiro x )
1 3
se T ≠ NULO então 2 4 enquanto EProx(P) ≠ NULO faça
se x < Info(T) então R  P;
removeArvoreBinaria(EProx(T), x); P  EProx(P);
senão se x > Info(T) então fimEnquanto
removeArvoreBinaria(DProx(T), x); Info(T)  Info(P);
senão // x foi encontrado se T = R
noArvore ↑P; então DProx(R)  DProx(P);
P  T; senão EProx(R)  Dprox(P);
se DProx(P) = NULO então fimSe
T  Eprox(P); fimSe 50
T
senão se Eprox(P) = NULO então fimSe R
T  DProx(P); fimSe 80

senão fimFunção
noArvore ↑R;
61 99
R  P;
P  Dprox(P);

1 3 P
2 4 80
88
Estrutura de Dados Prof. Marcos Alves 113

Você também pode gostar