Partage de codes sources - CodesWall.info
C
> Arbre complet p3
Titre
Arbre complet p3
Postée le
30-11-2010
Affichée
273
Mini-lien
Description
Arbre de recherche pour tritab
Etat
Contient des erreurs.
Code d'insertion
Options
Tweet
Téléchargement
#include <stdio.h>
#include <stdlib.h>
typedef
struct
noeud
{
int
donnee
;
struct
noeud
*
fg
;
struct
noeud
*
fd
;
}
*
Arbre
;
Arbre initArbre
(
)
{
Arbre a
;
a
=
NULL
;
return
a
;
}
int
videArbre
(
Arbre a
)
{
return
a
==
NULL
;
}
int
DonneeArbre
(
Arbre a
)
{
return
a
->
donnee
;
}
Arbre FilsGauche
(
Arbre a
)
{
return
a
->
fg
;
}
Arbre FilsDroit
(
Arbre a
)
{
return
a
->
fd
;
}
int
Feuille
(
Arbre a
)
{
if
(
FilsDroit
(
a
)
==
NULL
&&
FilsGauche
(
a
)
==
NULL
)
{
return
1
;
}
else
return
0
;
}
Arbre creatFeuille
(
int
elt
)
{
Arbre a
;
a
=
(
Arbre
)
malloc
(
sizeof
(
struct
noeud
)
)
;
a
->
donnee
=
elt
;
a
->
fg
=
NULL
;
a
->
fd
=
NULL
;
return
a
;
}
Arbre creatNoeud
(
int
elt
,
Arbre filsg
,
Arbre filsd
)
{
Arbre nd
;
nd
=
(
Arbre
)
malloc
(
sizeof
(
struct
noeud
)
)
;
nd
->
donnee
=
elt
;
nd
->
fg
=
filsg
;
nd
->
fd
=
filsd
;
return
nd
;
}
void
ParcoursInfixe
(
Arbre a
)
{
if
(
!
videArbre
(
a
)
)
{
ParcoursInfixe
(
FilsGauche
(
a
)
)
;
printf
(
"%i
\n
"
,
DonneeArbre
(
a
)
)
;
// on peut remplacer le printf par ce qu'on veut
ParcoursInfixe
(
FilsDroit
(
a
)
)
;
}
}
void
suppArbre
(
Arbre a
)
{
if
(
!
videArbre
(
a
)
)
{
suppArbre
(
FilsGauche
(
a
)
)
;
suppArbre
(
FilsDroit
(
a
)
)
;
free
(
a
)
;
}
}
void
insertEltArbreRech
(
Arbre
*
a
,
int
elt
)
{
if
(
videArbre
(
*
a
)
)
{
*
a
=
creatFeuille
(
elt
)
;
}
else
{
if
(
elt
<=
DonneeArbre
(
*
a
)
)
{
insertEltArbreRech
(
&
(
(
*
a
)
->
fg
)
,
elt
)
;
}
else
{
insertEltArbreRech
(
&
(
(
*
a
)
->
fd
)
,
elt
)
;
}
}
}
void
infixeABRtab
(
int
n
,
Arbre a
,
int
*
tab
)
{
if
(
!
videArbre
(
a
)
)
{
infixeABRtab
(
n
,
FilsGauche
(
a
)
,
tab
)
;
tab
[
n
]
=
DonneeArbre
(
a
)
;
n
++;
infixeABRtab
(
n
,
FilsDroit
(
a
)
,
tab
)
;
}
}
void
triTab
(
int
n
,
int
*
tab
)
{
// n est la taille du tableau
Arbre a
;
int
i
;
a
=
initArbre
(
)
;
for
(
i
=
0
;
i
<
n
;
i
++
)
{
insertEltArbreRech
(
&
a
,
tab
[
i
]
)
;
}
infixeABRtab
(
0
,
a
,
tab
)
;
for
(
i
=
0
;
i
<
10
;
i
++
)
{
printf
(
"%i
\n
"
,
tab
[
i
]
)
;
}
suppArbre
(
a
)
;
}
Arbre ppnArbre
(
Arbre a
)
{
Arbre fig
;
fig
=
FilsGauche
(
a
)
;
if
(
videArbre
(
a
)
)
{
return
a
;
}
else
{
return
ppnArbre
(
fig
)
;
}
}
Arbre suppRacine
(
Arbre a
)
{
Arbre aa
,
fig
,
fid
;
fig
=
FilsGauche
(
a
)
;
fid
=
FilsDroit
(
a
)
;
aa
=
a
;
if
(
videArbre
(
fid
)
)
{
a
=
fig
;
}
else
{
a
=
fid
;
Arbre ppnd
;
ppnd
=
ppnArbre
(
fid
)
;
ppnd
->
fg
=
fig
;
}
free
(
aa
)
;
return
a
;
}
int
main
(
)
{
int
i
;
int
tab
[
10
]
=
{
1
,
6
,
3
,
23
,
2
,
45
,
66
,
32
,
5
,
7
}
;
Arbre a
;
a
=
initArbre
(
)
;
triTab
(
10
,
tab
)
;
for
(
i
=
0
;
i
<
10
;
i
++
)
{
insertEltArbreRech
(
&
a
,
tab
[
i
]
)
;
}
}
}
Postez votre code-source
Informations
Catégorie *
-
ActionScript3
ASP
C
C#.Net
C++
COBOL
CSS
Delphi
Fichier .ini
HTML4
HTML5
Java
javascript
jQuery
Latex
MatLab
mIRC
MySQL
Objective-C
OCaml
pascal
Perl
Php
Python
QBasic
Ruby
Script Batch
Shell
SmallTalk
VB.Net
VBA
Visual Basic
XML
Autre
Titre *
(50 car. max)
Description *
(200 car. max)
Le code
Fonctionne
Ne fonctionne pas
Je ne sais pas
Source
* : Champs obligatoires
Fermer
Accueil
Poster
Actualités
Règles
Contact
Partenaires
Infos / Aide
ActionScript3
(0)
ASP
(0)
C
(65)
C#.Net
(4)
C++
(51)
COBOL
(0)
CSS
(21)
Delphi
(0)
Fichier .ini
(5)
HTML4
(16)
HTML5
(2)
Java
(48)
javascript
(35)
jQuery
(0)
Latex
(6)
MatLab
(3)
mIRC
(3)
MySQL
(13)
Objective-C
(1)
OCaml
(4)
pascal
(9)
Perl
(11)
Php
(58)
Python
(3)
QBasic
(1)
Ruby
(1)
Script Batch
(8)
Shell
(10)
SmallTalk
(1)
VB.Net
(5)
VBA
(5)
Visual Basic
(6)
XML
(17)
Autre
(18)
\n
Forum informatique