Slt j’ai fais qlq tentatives pour écrire un prog qui binarise un arbre n-aire. j’ai réussi a pondre une fonction qui binarise seulement les fils d’un nœud donné mais j’ai pas trouvé cmt faire pour qu’elle devienne récursive.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
 
#define N 3
 
 
typedef struct cel 
{
	int val;
	cel* fils[N];
}cel;
 
 
typedef struct cel_b
{
	int val;
	cel_b* fg;
	cel_b* fd;
}cel_b;
 
 
 
void bin(cel** a,cel_b** b,int i)
{
	cel_b *temp=NULL,*bb;
 
	puts("hy");
 
	bb=(*b);
	puts("entre");
	while (i<N)
	{
 
		if ((*a)->fils[i]!=NULL)
		{
 
			if (i==0) 
			{
				puts("i==0");
				bb->fg=creer_feuille_b(bb->fg);//creer_feuille_b //alloue la memoire et initialise les 2 fils du pointeur a null 
 
 
				bb->fg->val=(*a)->fils[i]->val;
				i++;
			}
 
			else
			{
 
				if (bb->fd==NULL  && (*a)->fils[1]!=NULL)
				{
						puts("b==NULL");
					bb->fd=creer_feuille_b(bb->fd);
					bb->fd->val=(*a)->fils[i]->val;
					i++;
				}
				else
				{
					if ( (*a)->fils[i]!=NULL )
					{
					puts("recu");
 
					bb->fd->fd=creer_feuille_b(bb->fd);
					bb->fd->fd->val=(*a)->fils[i]->val;
					i++;
					}
				}
 
			}
 
 
 
		puts("FINNN");
 
	}
		else
		{
		i++;
		}
 
}
 
}
Edit le code n’est pas encore propre.
merci.