Jump to content
SexPistolsPT

Árvore Binária

Recommended Posts

SexPistolsPT

Boa tarde,

estou com um problema na remoção do primeiro elemento de uma árvore binária percorrida de forma infixa.

Isto é, tendo uma árvore binária quero remove apenas o 1º elemento.

iremove :: a -> a
iremove x = ...

Agradeço a ajuda,

Hugo Sousa

Share this post


Link to post
Share on other sites
Betovsky

estou com um problema na remoção do primeiro elemento de uma árvore binária percorrida de forma infixa.

E em concreto qual é o problema que tens? É na parte de percorrer a árvore? É não saber o que é percorrer de forma infixa? É após encontrar o elemento, não o conseguires remover?

Como é que já tentaste resolver?

Normalmente essa é a forma mais fácil de explicar, uma pessoa indicando onde está errado e como poderás corrigir...


"Give a man a fish and he will eat for a day; Teach a man to fish and he will eat for a lifetime. The moral? READ THE MANUAL !"

Sign on a computer system consultant's desk

Share this post


Link to post
Share on other sites
Baderous

Percorrer a árvore de forma "infixa"? Não será antes "fazer uma travessia inorder"?

Share this post


Link to post
Share on other sites
SexPistolsPT

Percorrer a árvore de forma infixa é Left - Root - Right.

O problema é dada uma arvore, quero remover o 1º elemento da árvore e devolver a árvore sem o 1º elemento.

O meu problema é 1º remover o elemento e depois reconstruir a árvore sem o 1º elemento.

Share this post


Link to post
Share on other sites
Baderous

Isso para mim sempre se chamou travessia inorder. Infixa diz respeito a um tipo de notação.

Para remover o elemento, podes passar a árvore para uma lista fazendo uma travessia inorder, depois removes o elemento da lista e voltas a construir a árvore.

Share this post


Link to post
Share on other sites
Baderous

Fazes uma função que insira um elemento numa árvore. De seguida usas o fold para gerar a árvore a partir da lista.

Share this post


Link to post
Share on other sites
Betovsky

Isso é complicar demasiado.

Penso que basta percorrer a árvore na devida forma e quando não poder percorrer mais (último nodo) então é removê-lo.

Ou estou a ver mal?


"Give a man a fish and he will eat for a day; Teach a man to fish and he will eat for a lifetime. The moral? READ THE MANUAL !"

Sign on a computer system consultant's desk

Share this post


Link to post
Share on other sites
SexPistolsPT

Mas aí temos um problema, não? Se removemos o 1º elemento no fim de percorrer a árvore, os outros elementos deixam de estar ligados já que removemos um dos possiveis nós (que tem filhos...)

Share this post


Link to post
Share on other sites
Betovsky

Não. Porque se é o primeiro em inorder, significa que é o nó mais à esquerda na árvore e como tal não tem filhos. É só indicar onde está esse nó que passa a estar vazio.


"Give a man a fish and he will eat for a day; Teach a man to fish and he will eat for a lifetime. The moral? READ THE MANUAL !"

Sign on a computer system consultant's desk

Share this post


Link to post
Share on other sites
Rui Carlos

Não. Porque se é o primeiro em inorder, significa que é o nó mais à esquerda na árvore e como tal não tem filhos. É só indicar onde está esse nó que passa a estar vazio.

Pode ter um filho. Mas nesse caso também é fácil de resolver o problema, pois é só um.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.