2 votes

Algorithmes d'arbres binaires

Je suis tombé sur l'algorithme suivant qui insère cinq nœuds dans un arbre binaire, puis parcourt l'arbre.

Quel type d'arborescence est créé ? Est-elle équilibrée ou déséquilibrée ? Comment le savoir ? Cela affecterait-il le type de traversée que l'algorithme effectue ?

import Prog1Tools.IOTools;

class Node {
    Node left;
    Node right;
    int value;

    public Node(int value) {
        this.value = value;
    }
}

public class GeneralTreeTest {
    public static void main(String[] args) {

        // build a simple tree add 5 nodes to the tree
        Node root = new Node(5);
        System.out.println("Tree Example");
        System.out.println("Building tree with root value " + root.value);
        insert(root, 1);
        insert(root, 8);
        insert(root, 6);
        insert(root, 3);
        insert(root, 9);
        System.out.println("Traversing tree ");
        printOrder(root);

    }

    public static void insert(Node node, int value) {
        if (value < node.value) {
            if (node.left != null) {
                insert(node.left, value);
            } else {
                System.out.println(" Inserted " + value + " to left of "
                    + node.value);
                node.left = new Node(value);
            }
        } else if (value > node.value) {
            if (node.right != null) {
                insert(node.right, value);
            } else {
                System.out.println(" Inserted " + value + " to right of "
                    + node.value);
                node.right = new Node(value);
            }
        }
    }

    public static void printOrder(Node node) {
        if (node != null) {
            printOrder(node.left);
            System.out.println(" Traversed " + node.value);
            printOrder(node.right);
        }
    }
}

0voto

cricket_007 Points 6938

Est-il équilibré ou déséquilibré ?

Vous n'avez aucune logique d'équilibre. Par exemple, si vous insérez 1,2, 3, alors tous les nœuds seront poursuivis vers la droite. Dans un arbre équilibré AVL, par exemple, le 1 "tournerait vers la gauche", et le 2 deviendrait la racine, ce qui équilibrerait l'arbre.

Comment savoir si c'est l'un ou l'autre ?

Vous pourriez dessiner les pointeurs des structures de données Node dans votre arbre.

qui affecterait le type de traversée que l'algorithme effectue.

Je ne devrais pas. Vous imprimez actuellement à gauche, la Racine puis à droite. Le même ordre s'appliquerait à n'importe quel type d'arbre binaire.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X