Uma lista que contem sub listas, e sub-sublistas pode ser vista como uma arvore. A lista [a, [[b, c], d], e] pode ser vista como a árvore
O número ao lado da arvore é a profundidade do nível.
Ex: removenumeros([e, 5, t, w, q, 3.4],X) é verdadeiros com X = [e, t, w, q]
Ex: profundidade(r,[e,[r,[t]],[t,[r]]],X) retorna X = 2
Ex: subarvore([[a,b],[c],[c,[e, f]]], [e, f]) deve ser verdadeiro.
Já subarvore([[a, b], [c], [c, [e, f]]],[c, e, f]) falha.
( arv(chave, valor, subarvore-a-esquerda, subarvore-a-direita)
assim arv(4,a,arv(2,b,arv(1,h,vazio,vazio),arv(3,c,vazio,vazio)),arv(7, a, vazio, arv(9, g, vazio, vazio))) representa a arvore:
Ex: se a arvore acima é o valor da variável XX então: retira(XX,2,YY) retorna (por exemplo) YY = arv(4,a,arv(1,h, vazia, arv(3, c, vazia, vazia)), arv(7, a, vazia, arv(9, g, vazia, vazia)))