コード例 #1
0
ファイル: NHXnode.c プロジェクト: jfnavarro/PrimeTV2
void
delete_tree_nodes(struct NHXnode *n)
{
    if (n != 0)
    {
        struct NHXnode *left = n->left;
        struct NHXnode *right = n->right;
        delete_tree_nodes(left);
        delete_tree_nodes(right);
        delete_node(n);
    }
}
コード例 #2
0
ファイル: tree.c プロジェクト: SamuelSchlesinger/dslib
/*
 * Delete all nodes of a tree
 */
int delete_tree_nodes(tree_p root)
{
	int count = 0;

	if (!root) {
		log(ERROR, "root invalid.\n");
		return -1;
	}

	if (root->left)
		count += delete_tree_nodes(root->left);

	if (root->right)
		count += delete_tree_nodes(root->right);

	free(root);
	root = NULL;

	return ++count;
}
コード例 #3
0
ファイル: NHXtree.c プロジェクト: jfnavarro/PrimeTV2
void
delete_trees(struct NHXtree *tree)
{
    if (tree != 0)
    {
        delete_trees(tree->next);
        delete_tree_nodes(tree->root);
        free(tree);
    }
    tree = 0;
}
コード例 #4
0
ファイル: tree.c プロジェクト: SamuelSchlesinger/dslib
/*
 * Destroy a tree
 */
int destroy_tree(tree_pp head)
{
	int count = 0;

	if (!head) {
		log(ERROR, "head invalid.\n");
		return -1;
	}

	count = delete_tree_nodes(*head);

	free(head);
	head = NULL;

	return count;
}