Inserção numa BST: Difference between revisions
From Wiki**3
No edit summary |
(No difference)
|
Revision as of 08:13, 19 May 2005
Função de inserção recursiva numa BST.
link insertR(link h, Item item) {
Key v = key(item), t = key(h->item);
if (h == z) return NEW(item, z, z, 1);
if less(v, t) h->l = insertR(h->l, item);
else h->r = insertR(h->r, item);
h->N++;
return h;
}
Implementação da função STinsert do ADT tabela de sÃmbolos.
void STinsert(Item item) {
head = insertR(head, item);
}
Implementação não recursiva da função STinsert.
void STinsert(Item item) {
Key v = key(item);
link p = head, x = p;
if (head == z) {
head = NEW(item, z, z, 1);
return;
}
while (x != z) {
p = x;
x->N++;
x = less(v, key(x->item)) ? x->l : x->r;
}
x = NEW(item, z, z, 1);
if (less(v, key(p->item))) p->l = x; else p->r = x;
}