Definido no ficheiro treemap.c.
Ir para o código fonte deste ficheiro.
Funções | |
| static TreeNode | leftRotate (TreeNode tree) |
| Efectua uma rotação à esquerda. | |
| static TreeNode | rightRotate (TreeNode tree) |
| Efectua uma rotação à direita. | |
| static TreeNode | leftBalance (TreeNode tree) |
| Efectua as rotações necessária a uma árvore que está balanceada para a esquerda. | |
| static TreeNode | rightBalance (TreeNode tree) |
| Efectua as rotações necessária a uma árvore que está balanceada para a direita. | |
| static TreeNode | rLeftBalance (TreeNode tree, int *h) |
| Efectua as rotações necessária a uma árvore que está balanceada para a esquerda. | |
| static TreeNode | rRightBalance (TreeNode tree, int *h) |
| Efectua as rotações necessária a uma árvore que está balanceada para a direita. | |
| static TreeNode | upperLeft (TreeNode tree) |
| Determina o nodo com maior chave na subárvores esquerda da árvore dada. | |
| TreeMap | newTree (int(*keyComp)(void *, void *)) |
| Cria uma árvore. | |
| int | treeSetKComp (TreeMap tree, int(*keyComp)(void *, void *)) |
| Altera a função que compara as chaves de uma árvore. | |
| static void | treeDelAux (TreeNode tree) |
| Elimina um nodo de uma (sub)árvore e todos os seus descendentes. | |
| void | treeDelete (TreeMap tree) |
| Elimina uma árvore. | |
| static TreeNode | treeInsAux (TreeNode tree, void *key, void *val, int replace, int *h, int(*comp)(void *, void *)) |
| Função auxiliar da função de inserção. | |
| int | treeInsert (TreeMap tree, void *key, void *val, int replace) |
| Insere um par chave/valor numa árvore. | |
| static TreeNode | treeRemAux (TreeNode tree, void *key, void **value, void(*del)(void *), int *h, int(*comp)(void *, void *)) |
| Função auxiliar da função de remoção. | |
| int | treeRemove (TreeMap tree, void *key, void **value, void(*del)(void *)) |
| Remove um elemento de uma árvore. | |
| int | treeGet (TreeMap tree, void *key, void **value) |
| Procura um elemento numa árvore. | |
| int | treeIsAVLAux (TreeNode tree) |
| Verifica se uma (sub)árvore está equilibrada na raiz e se todas as suas subárvores também estão. | |
| int | treeIsAVL (TreeMap tree) |
| Verifica se uma árvore está equilibrada. | |
| static int | treeHightAux (TreeNode tree) |
| Determina a altura de uma (sub)árvore. | |
| int | treeHeight (TreeMap tree) |
| Determina a altura de uma árvore. | |
| int | treeSize (TreeMap tree) |
| Determina o número de elementos de uma árvore. | |
| static void | treeInOAux (TreeNode tree, void(*fun)(void *, void *)) |
| Função auxiliar da função que efectua uma travessia In-Order da árvore. | |
| int | treeInOrder (TreeMap tree, void(*fun)(void *, void *)) |
| Efectua uma travessia In-Order de uma árvore. | |
| static void | treePrOAux (TreeNode tree, void(*fun)(void *, void *)) |
| Função auxiliar da função que efectua uma travessia Pre-Order da árvore. | |
| int | treePreOrder (TreeMap tree, void(*fun)(void *, void *)) |
| Efectua uma travessia Pre-Order de uma árvore. | |
| static void | treePsOAux (TreeNode tree, void(*fun)(void *, void *)) |
| Função auxiliar da função que efectua uma travessia Pos-Order da árvore. | |
| int | treePosOrder (TreeMap tree, void(*fun)(void *, void *)) |
| Efectua uma travessia Pos-Order de uma árvore. | |
| static int | treeKAux (TreeNode tree, Iterator it) |
| Percorre uma (sub)árvore e adiciona as chaves a um iterador. | |
| Iterator | treeKeys (TreeMap tree) |
| Cria um iterador a partir das chaves de uma árvore. | |
| static int | treeVAux (TreeNode tree, Iterator it) |
| Percorre uma (sub)árvore e adiciona os valores associados às chaves a um iterador. | |
| Iterator | treeValues (TreeMap tree) |
| Cria um iterador a partir dos valores associados às chaves de uma árvore. | |
Efectua as rotações necessária a uma árvore que está balanceada para a esquerda.
Esta função destina-se a (sub)árvores cujo desiquilíbrio resulte do processo de inserção de um novo elemento.
| tree | raiz da (sub)árvore que vamos equilibrar. |
| TreeMap newTree | ( | int(*)(void *, void *) | keyComp | ) |
Cria uma árvore.
Se não for possível criar a árvore devolve NULL. Tem que ser especificada a função que compara chaves. Esta função pode ser alterada a qualquer momento, utilizando a função treeSetKComp.
(Ver descrição das funções)
| keyComp | função que compara duas chaves. |
Efectua as rotações necessária a uma árvore que está balanceada para a direita.
Esta função destina-se a (sub)árvores cujo desiquilíbrio resulte do processo de inserção de um novo elemento.
| tree | raiz da (sub)árvore que vamos equilibrar. |
Efectua as rotações necessária a uma árvore que está balanceada para a esquerda.
Esta função destina-se a (sub)árvores cujo desiquilíbrio resulte do processo de remoção de um novo elemento.
| tree | raiz da (sub)árvore que vamos equilibrar. | |
| h | indica se a altura da árvore foi alterada ou não. |
Efectua as rotações necessária a uma árvore que está balanceada para a direita.
Esta função destina-se a (sub)árvores cujo desiquilíbrio resulte do processo de remoção de um novo elemento.
| tree | raiz da (sub)árvore que vamos equilibrar. | |
| h | indica se a altura da árvore foi ou não alterada. |
| static void treeDelAux | ( | TreeNode | tree | ) | [static] |
| void treeDelete | ( | TreeMap | tree | ) |
| int treeGet | ( | TreeMap | tree, | |
| void * | key, | |||
| void ** | value | |||
| ) |
Procura um elemento numa árvore.
Devolve o valor associado a uma chave, se esta existir. Se a chave não existir é colocado o valor NULL em value.
| tree | árvore. | |
| key | chave que procuramos. | |
| value | endereço onde é colocado o resultado. |
| int treeHeight | ( | TreeMap | tree | ) |
| static int treeHightAux | ( | TreeNode | tree | ) | [static] |
| static void treeInOAux | ( | TreeNode | tree, | |
| void(*)(void *, void *) | fun | |||
| ) | [static] |
| int treeInOrder | ( | TreeMap | tree, | |
| void(*)(void *, void *) | fun | |||
| ) |
Efectua uma travessia In-Order de uma árvore.
Aplica a função fun a todos os elementos da árvore.
A função fun tem que ser do tipo: void fun(void*,void*).
| tree | árvore. | |
| fun | função a ser aplicada. |
| static TreeNode treeInsAux | ( | TreeNode | tree, | |
| void * | key, | |||
| void * | val, | |||
| int | replace, | |||
| int * | h, | |||
| int(*)(void *, void *) | comp | |||
| ) | [static] |
Função auxiliar da função de inserção.
| tree | árvore onde vamos fazer a inserção. | |
| key | chave do elemento a inserir. | |
| val | valor associado à chave. | |
| replace | variável que indica se valores já existentes são ou não substituídos. | |
| h | variável que permite saber se a inserção aumentou o tamanho da árvore. | |
| comp | função que permite comparar duas chaves. |
| int treeInsert | ( | TreeMap | tree, | |
| void * | key, | |||
| void * | value, | |||
| int | replace | |||
| ) |
Insere um par chave/valor numa árvore.
Caso a chave já exista, a variável replace determina se o valor antigo é ou não substituído (caso seja não há substituição, caso tenha outro valor o novo elemento é inserido).
| tree | árvore. | |
| key | chave. | |
| value | valor associado à chave. | |
| replace | variável que determina se os elementos já existentes são ou não substituídos. |
| int treeIsAVL | ( | TreeMap | tree | ) |
Verifica se uma árvore está equilibrada.
Considera-se que a árvore está equilibrada se a diferença entre a altura das subárvores esquerda e direita (em todos os nodos) não for superior a 1.
| tree | árvore. |
| int treeIsAVLAux | ( | TreeNode | tree | ) |
Cria um iterador a partir das chaves de uma árvore.
Faz uma travessia In-Order da árvore e "coloca" as referências para as chaves num iterador. Se ocorrer algum erro a função devolve NULL.
| tree | árvore. |
| int treePosOrder | ( | TreeMap | tree, | |
| void(*)(void *, void *) | fun | |||
| ) |
Efectua uma travessia Pos-Order de uma árvore.
Aplica a função fun a todos os elementos da árvore.
A função fun tem que ser do tipo: void fun(void*,void*).
| tree | árvore. | |
| fun | função a ser aplicada. |
| int treePreOrder | ( | TreeMap | tree, | |
| void(*)(void *, void *) | fun | |||
| ) |
Efectua uma travessia Pre-Order de uma árvore.
Aplica a função fun a todos os elementos da árvore.
A função fun tem que ser do tipo: void fun(void*,void*).
| tree | árvore. | |
| fun | função a ser aplicada. |
| static void treePrOAux | ( | TreeNode | tree, | |
| void(*)(void *, void *) | fun | |||
| ) | [static] |
| static void treePsOAux | ( | TreeNode | tree, | |
| void(*)(void *, void *) | fun | |||
| ) | [static] |
| static TreeNode treeRemAux | ( | TreeNode | tree, | |
| void * | key, | |||
| void ** | value, | |||
| void(*)(void *) | del, | |||
| int * | h, | |||
| int(*)(void *, void *) | comp | |||
| ) | [static] |
Função auxiliar da função de remoção.
| tree | árvore onde vamos fazer a inserção. | |
| key | chave do elemento a inserir. | |
| value | local onde será colocada a informação associada ao elemento removido. | |
| del | função que elimina um chave. | |
| h | variável que permite saber se a remoção aumentou o tamanho da árvore. | |
| comp | função que permite comparar duas chaves. |
| int treeRemove | ( | TreeMap | tree, | |
| void * | key, | |||
| void ** | value, | |||
| void(*)(void *) | del | |||
| ) |
Remove um elemento de uma árvore.
Permite devolver o valor removido, caso o valor de value seja diferente de NULL. Se a chave não existir ou o elemento não for removido é colocado o valor NULL em value.
| tree | árvore. | |
| key | chave que queremos remover. | |
| value | endereço onde é colocado o elemento removido (ou NULL). | |
| del | função que elimina uma chave (ou NULL). |
| int treeSetKComp | ( | TreeMap | tree, | |
| int(*)(void *, void *) | keyComp | |||
| ) |
| int treeSize | ( | TreeMap | tree | ) |
Cria um iterador a partir dos valores associados às chaves de uma árvore.
Faz uma travessia In-Order da árvore e "coloca" as referências para os "valores" num iterador. Se ocorrer algum erro a função devolve NULL.
| tree | árvore. |