6. Arbres binaires#

On présente ici les arbres

6.1. Quelques exemples#

Le premier exemple qui vient en tête est celui de l’organisation des fichiers sous les systèmes POSIX.

!tree -L 1 -d /
/
├── bin -> usr/bin
├── boot
├── builds
├── dev
├── etc
├── home
├── lib -> usr/lib
├── lib64 -> usr/lib64
├── logs-30-168067
├── media
├── mnt
├── opt
├── proc
├── root
├── run
├── sbin -> usr/sbin
├── scripts-30-168067
├── srv
├── sys
├── tmp
├── usr
└── var

23 directories
!tree -L 1 -d /usr
/usr
├── bin
├── games
├── include
├── lib
├── lib64
├── libexec
├── local
├── sbin
├── share
└── src

11 directories
_images/19cc311c7ac5696416073c8893455069b48021312bac0fe562759efbfb84bfea.svg

On peut présenter des calculs comme un arbre :

_images/53dd16f4da871cb47a97b3e9764222e7b0bfdd5a41ece58929f172da546f33ce.svg

Les arbres sont des cas particuliers des graphes :

_images/355cfa647f7e45beb7ad91feb4600ef833f4b70297554da755ab55e5e862fd51.svg

Au delà de ces quelques exemples, on peut noter quelques points pertinents sur les arbres.

Un autre exemple d’arbre : https://stackoverflow.com/questions/42621190/display-this-decision-tree-with-graphviz

6.2. Définitions#

  • Le point de départ d’un arbre est la racine

  • Les points nommés sont des nœuds

  • Les arêtes entre deux nœuds sont des branches

  • si un nœud ne comporte aucune arête qui «descende» vers un autre nœud, on dit que c’est une feuille

La profondeur d’une feuille (nœud) est le nombre de nœuds traversé de la racine jusqu’à la feuille (nœud). Par exemple, la profondeur de '^' dans le deuxième graphe est 3.

La hauteur d’un arbre est le maximum des profondeurs.

La taille d’un arbre est le nombre de ses nœuds.

Lorsque chaque nœud ne comporte qu’au plus deux branches, on dit que l’arbre est binaire.

6.3. Arbres binaires#

On peut développer un arbre en considérant, pour chaque nœud autre que les feuilles qu’il se découpe en un sous arbre gauche et un sous arbre droit.

_images/229f7351627b4de9c2369a255afb13a34ef10411fe1006c59c9d1a9c2f396fdf.svg

On peut ici considérer deux sous-arbres (à gauche en rouge et à droite en bleu) du nœud '-', qui sont ici des arbres binaires eux aussi. Cette propriété possède son importance, pour permettre des parcours récursifs sur les arbres.