Lista 3 Prolog (turma A)

Instruções:

Definições:

Uma forma de implementar árvores binárias usando listas é representa-las como [sub-arvore-esquerda,dado, sub-arvore-direita)

Uma folha é representada por [ [], dado, [] ]

A árvore abaixo

4 / \ 2 7 / \ \ 1 3 9 seria representada como [ [ [[], 1, []], 2 [ [], 3, [] ] ], 4 ,[ [], 7, [ [], 9, [] ] ] ]

Este arquivo contém uma implementação em Prolog das operações de insere e remove elementos de uma árvore de busca binária, inclusive as duas operações de rotação de uma árvore.

Problemas

Assume que uma arvore AVL é implemenada como [nl, left, middle, nr, right] onde left e right são as subarvores a esquerda e a direita, nl e nr são as profundidades das duas sub-arvores e middle o dado armazenado no nó.

Implemente os predicados avl_insert e avl_delete que inserem e removem um elemento de uma arvore AVL. avl_insert tem tres argumentos e é verdade quando o 10 argumento é uma arvore AVL, o segundo é um dado, e o terceiro é uma arvore AVL que resulta da insersão do dado na primeira arvore. Similarmente para avl_delete.