void changeRoot(Graph *graph, int index) { bool is_root = graph->nodes.items[index].root; if(is_root) removeRootNode(graph, index); else addRootNode(graph, index); graph->nodes.items[index].root = !is_root; }
void removeNode(Graph *graph, int index) { Node *node = getNode(graph, index); assert(node->indegree == 0 && node->outdegree == 0); if(node->out_edges.items != NULL) free(node->out_edges.items); if(node->in_edges.items != NULL) free(node->in_edges.items); if(node->root) removeRootNode(graph, index); removeHostList(node->label.list); removeFromNodeArray(&(graph->nodes), index); graph->number_of_nodes--; }
bool BinarySearchTree::removeNode(METADATA** node, char* key) { if(*node != NULL) { if (strcmp(key, (*node)->key) == 0) { removeRootNode(node); size--; return true; } else if(strcmp(key, (*node)->key) < 0) { return removeNode(&((*node)->left), key); } else { return removeNode(&((*node)->right), key); } } else { return false; } }