Escolar Documentos
Profissional Documentos
Cultura Documentos
Estrutura de Dados II
Árvore Binária
1. int ok;
2.
3. // se t aponta para null, a inserção é na raiz...
4.
5. if (*t == NULL) {
6. *t = (tnoarv *) malloc(sizeof(tnoarv));
7.
8. if (*t == NULL) return;
9. (*t)->esq = NULL;
10. (*t)->dir = NULL;
11. (*t)->info = dado;
12. }
13.
14. // Se o dado a ser inserido for menor que o nó atual, recursividade à esquerda
15.
16. if (dado < (*t)->info) {
17. inserir(&((*t)->esq), dado);
18. }
19. else{
20.
21. // Se o dado a ser inserido for menor que o nó atual, recursividade à direita
22.
23. if (dado > (*t)->info) {
24. inserir(&((*t)->dir), dado);
25. }
26. }
1. tArv aux;
2. if(!arvore_vazia(*raiz)){
3.
4. // se o valor que será removido for menor que o nó atual,
5.
6. if(valor < (*raiz)->info){
7. remover(&((*raiz)->esq), valor); // faz recursividade á esquerda
8. }
9.
10. else{
11.
12. // se o valor que será removido for maior que o nó atual,
13.
14. if(valor > (*raiz)->info){
15. remover(&((*raiz)->dir), valor); // faz recursividade á direita.
16. }
17. else{
18.
19. // encontrou
20.
21. // quando o nó a ser removido for encontrado,
22.
23. if( !arvore_vazia((*raiz)->esq) && !arvore_vazia((*raiz)->dir) ){
24.
25. // verificamos se os nós filhos da esquerda e direita não são null.
26.
27. // se não forem null, buscamos o menor nó a partir do nó da direita.
28.
29. aux = minimo((*raiz)->dir);
30. (*raiz)->info = (aux->info);
31. remover(&(*raiz)->dir, (*raiz)->info);
32. }
33. else{
34. // caso os nó da direita e da esqueda, ou somente o da direita for null,
35.
36. // precisamos apenas remover
37.
38. aux = *raiz;
39.
40. // o nó atual e fazer ajustar os ponteiros
41.
42. if(arvore_vazia((*raiz)->esq)){
43.
44. // se o nó da esquerda for vazio
45.
46. // o nó pai do atual, apontará para o filho da direita do nó atual.
47. *raiz = (*raiz)->dir;
48. }
49.
50. else {
51.
52. // se o nó da esquerda não for vazio.
53.
54. // o nó pai do atual, apontará para o filho da esquerda do nó atual.
55.
56. *raiz = (*raiz)->esq;
57. }
58. free(aux);
59. }
60. }
61. }
62. }
63. }