Exemplo n.º 1
0
BinaryTree* deleteNode(int val, BinaryTree *tree)
{
	if(haveNode(val,tree))//condition : le noeud est présent
	{
		switch(numberOfLeaf(tree,val)){//test du nombre de fils et appel de la fonction adequate
			case 0:
			return deleteLeaf(val,tree);
			break;
				
			case 1:
			return deleteNode1(val,tree);
			break;
			
			case 2:
			return deleteNode2(val,tree);
			break;
			
			default:
			return tree;
			break;
		}
	}
	else
	{
		return tree;
	}
}			
Exemplo n.º 2
0
void GraphState::deleteNode () {

    GSEdge &gsedge = nodes.back ().edges[0];
    int from = gsedge.tonode;
    nodes[from].edges.pop_back ();
    deleteNode2 ();
    edgessize--;
}
Exemplo n.º 3
0
BinaryTree* deleteNode2(int val, BinaryTree *tree)
{
	BinaryTree *res=NULL;
	res = malloc(sizeof(BinaryTree));
	if(haveNode(val,tree))//condition : le noeud est present
	{	
		if(nodeValue(tree)==val)// on se deplace dans le branches de l'arbre
		{
			// on supprime le noeud val dans l'arbre ou a été échangé val et le noeud de valeur maximale dans le sous arbre gauche
			res=deleteNode1(val,switchNode(val,maxNode(leftChild(tree)),tree));	
		}
		else// appel recursif
		{
			res=createNodeWithChilds(deleteNode2(val,leftChild(tree)),nodeValue(tree),deleteNode2(val,rightChild(tree)));
		}
	}
	else
	{
		res=tree;
	}
	return res;
}
Exemplo n.º 4
0
void GraphState::deleteStartNode () {
    deleteNode2 ();
}