Example #1
0
void tree_dispose(struct node *node)
    //@ requires tree(node, root, _);
    //@ ensures emp;
{
    //@ open tree(node, root, _);
    //@ open context(node, _, _, root);
    dispose_node(node);
}
Example #2
0
void dispose_node(struct node *node)
    //@ requires subtree(node, _, _);
    //@ ensures emp;
{
    //@ open subtree(node, _, _);
    if (node == 0) {
    } else {
        {
            struct node *left = node->left;
            dispose_node(left);
        }
        {
            struct node *right = node->right;
            dispose_node(right);
        }
        free(node);
    }
}
Example #3
0
 void dispose_node(trie_node *&t)
 {
     if (t != nullptr) {
         for (auto &n: t->children) {
             if (n != nullptr) {
                 dispose_node(n);
             }
         }
         delete t;
         t = nullptr;
     }
 }
Example #4
0
 void dispose_node(b_tree_node *n)
 {
     if (n != nullptr) {
         b_tree_cell *p = n->header;
         b_tree_cell *q;
         while (p != nullptr) {
             q = p;
             if (p->child) {
                 dispose_node(p->child);
             }
             p = p->next;
             delete q;
         }
         delete n;
     }
 }
Example #5
0
 void dispose()
 {
     dispose_node(root);
 }