Função que devolve o número de elementos de uma árvore
Função que nos diz se um elemento pertence ou não
a uma árvore (sem ordem)
Função que nos diz se um elemento pertence ou não
a uma árvore (com ordem)
Quantas comparações temos que fazer ( no pior caso )?
Função para inserir um elemento numa árvore binária
ordenada
Procedimento para inserir um elemento numa árvore ordenada
![]()
Função que devolve o número de elementos de uma árvore
Função
ContarElem ( Árvore ) --> Inteiro
começar
se EvaziaArv ( Árvore )
devolver 0
senão
devolver 1 + ContarElem ( fe ( Árvore ) ) + ContarElem
( fd ( Árvore ) )
acabar
Função que nos diz se um elemento pertence ou não
a uma árvore (sem ordem)
Função
PertenceArv ( Elemento , Árvore ) -->
boolean
começar
se EvaziaArv ( Árvore )
devolver Falso
senão
começar
se No ( Árvore ) = Elemento
devolver Verdadeiro
senão
devolver PertenceArv ( x, fe ( Árvore )) OU PertenceArv
( x, fd ( Árvore ))
acabar
acabar
Exemplo de uma árvore:
![]()
Para que a árvore seja útil é melhor que seja uma árvore ordenada
![]() |
Para
que a árvore seja ordenada, os elementos do filho direito têm
de ser >= que o pai e os elementos do filho esquerdo têm de
ser < que o pai.
|
|
![]() |
Função
PertenceArvOrd ( Elemento , Árvore )
--> boolean
começar
se EvaziaArv ( Árvore )
devolver Falso
senão
começar
se No ( Árvore ) = Elemento
devolver Verdadeiro
senão
começar
se Elemento < No ( Árvore )
devolver PertenceArvOrd ( Elemento, fe ( Árvore ))
senão
devolver PertenceArvOrd ( Elemento, fd ( Árvore )
acabar
acabar
acabar
Quantas comparações temos que fazer ( no pior caso )?
Altura = log2 ( elementos +1 )
A árvores ordenadas "servem" mas têm um problema
![]() |
Neste
caso, em que temos cinco elementos, para procurar o 5, tinhamos
que fazer cinco comparações.
A árvore
tem de ser equilibrada.
|
Função para inserir um elemento numa árvore binária
ordenada
Função
InserArvOrd ( Elemento , Árvore ) -->
Árvore
começar
se EvaziaArv ( Árvore )
devolver CriarArv (Árvore, NULL, NULL )
senão
começar
se ( Elemento < No ( Árvore )
devolver CriarArv ( No ( Árvore
), InserArvOrd ( Elemento, fe ( Árvore )), fd ( Árvore)
)
senão
devolver CriarArv ( No ( Árvore
), fe ( Árvore ), InserArvOrd ( Elemento, fd ( Árvore
))
acabar
acabar
Exemplo:
a1--> InserArvOrd ( 8, Árvore )

Procedimento para inserir um elemento numa árvore ordenada
Procedimento InserArvOrd ( Elemento , Árvore* )
começar
se EvaziaArv ( Árvore )
Árvore <-- CriarArv (Árvore,
NULL, NULL )
senão
começar
se ( Elemento < No ( Árvore )
InserArvOrd ( Elemento, apont fe ( Árvore ))
senão
InserArvOrd ( Elemento, apont fd ( Árvore ))
acabar
acabar
