Implémentation d'un arbre binaire en java
Résolu
lynajar
Messages postés
32
Date d'inscription
Statut
Membre
Dernière intervention
-
lynajar Messages postés 32 Date d'inscription Statut Membre Dernière intervention - 11 août 2020 à 16:59
lynajar Messages postés 32 Date d'inscription Statut Membre Dernière intervention - 11 août 2020 à 16:59
A voir également:
- Implémentation d'un arbre binaire en java
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel football - Télécharger - Jeux vidéo
- Binaire - Guide
- Eclipse java - Télécharger - Langages
- Java apk - Télécharger - Langages
4 réponses
Bonjour,
Je ne comprends pas dans ton image le lien entre ta matrice et ton arbre.
Est-ce que c'est censé être une matrice d'adjacence (ça n'y ressemble pas), où se trouve la symétrie dans la matrice ?
Quant à l'arbre, où se trouve la valeur 4 qui apparaît dans la matrice ?
Pour le code, la classe BST n'a aucun attribut, il serait sûrement pertinent qu'elle ait au moins un Node représentant la racine de l'arbre.
De plus je pense que la classe Node devrait être "cachée" et que les méthodes de BST n'y fasse référence ni dans les paramètres ni dans les résultats des méthodes.
Je ne comprends pas dans ton image le lien entre ta matrice et ton arbre.
Est-ce que c'est censé être une matrice d'adjacence (ça n'y ressemble pas), où se trouve la symétrie dans la matrice ?
Quant à l'arbre, où se trouve la valeur 4 qui apparaît dans la matrice ?
Pour le code, la classe BST n'a aucun attribut, il serait sûrement pertinent qu'elle ait au moins un Node représentant la racine de l'arbre.
De plus je pense que la classe Node devrait être "cachée" et que les méthodes de BST n'y fasse référence ni dans les paramètres ni dans les résultats des méthodes.
Bonjour;
la matrice est symétrique, c'est juste que j'ai rempli la partie inférieur par des zéros, parce que lors de la création de l'arbre j'utilise qu'une seul partie, inférieur ou supérieur.
j'ai besoin d'une aide dans la construction de l'arbre
la matrice est symétrique, c'est juste que j'ai rempli la partie inférieur par des zéros, parce que lors de la création de l'arbre j'utilise qu'une seul partie, inférieur ou supérieur.
j'ai besoin d'une aide dans la construction de l'arbre
Alors explique mieux comment fonctionne ta matrice, parce que je ne comprends pas à quoi correspondent ses valeurs, surtout vu l'arbre qui est donné en exemple.
Normalement, un arbre binaire représenté avec une matrice d'adjacence ne devrait pas avoir plus de deux valeurs par ligne (deux enfants maximum) et une valeur par colonne (un parent maximum).
Pour l'arbre de ton exemple, la matrice d'adjacence devrait être comme ceci :
Normalement, un arbre binaire représenté avec une matrice d'adjacence ne devrait pas avoir plus de deux valeurs par ligne (deux enfants maximum) et une valeur par colonne (un parent maximum).
Pour l'arbre de ton exemple, la matrice d'adjacence devrait être comme ceci :
0 1 2 3Ça n'a rien à voir avec la matrice de ton exemple.
0 1 1
1 1
2
3
Pour moi cette matrice ne correspond toujours à rien, d'autant que tu ne te sers que de la première ligne...
Voici un exemple d'arbre binaire :
Si je reprends ton arbre d'exemple ça pourrait donner ce code de test :
L'affichage donne
Ce qui correspond à ce schéma :
Voici un exemple d'arbre binaire :
public class Tree<D, E extends Comparable<E>> { private Node<D, E> root; public Tree(){ root = null; } public void add(final D description, final E value) { if (root == null) { root = new Node<>(description, value); } else { root.add(description, value); } } @Override public String toString(){ return String.valueOf(root); } private static class Node<D, V extends Comparable<V>> { private final D description; private final V value; private Node<D, V> left; private Node<D, V> right; public Node(final D description, final V value) { this.description = description; this.value = value; this.left = null; this.right = null; } public boolean add(final D newDescription, final V newValue) { final int direction = newValue.compareTo(value); if (direction < 0) { if (left == null) { left = new Node<>(newDescription, newValue); return true; } else { return left.add(newDescription, newValue); } } if (direction > 0) { if (right == null) { right = new Node<>(newDescription, newValue); return true; } else { return right.add(newDescription, newValue); } } return false; } @Override public String toString(){ return (left == null ? "" : "{" + left + "} <- ") + "(" + description + "=" + value + ")" + (right == null ? "" : " -> {" + right + "}"); } } }
Si je reprends ton arbre d'exemple ça pourrait donner ce code de test :
public class Test { public static void main(final String[] args) { final Tree<String, Integer> tree = new Tree<>(); tree.add("A", 3); tree.add("B", 4); tree.add("C", 1); tree.add("D", 2); System.out.println(tree); } }
L'affichage donne
{(C=1) -> {(D=2)}} <- (A=3) -> {(B=4)}(avec 1, 2, 3, et 4 dans l'ordre).
Ce qui correspond à ce schéma :
