Create a generic Node class and make use of it.
[TP_POO.git] / Arbres / ArbreBinaire.java
index 8f79d28c48379d5f5aafab9d322f14b8a166b713..89fccc761ccfcfe98c352e1c027e9e5c25c00cb9 100644 (file)
@@ -1,64 +1,20 @@
 
 /**
  * Binary tree class.
- * A binary tree is a ordered value tree with only two childs by node
+ * A binary tree is a ordered value tree with only two childs per node
  */
 public class ArbreBinaire {
-
-    private class IntNode {
-        private int data;
-        private IntNode leftIntNode;
-        private IntNode rightIntNode;
-
-        IntNode(int value) {
-            setData(value);
-            setLeftNode(null);
-            setRightNode(null);
-        }
-
-        IntNode(int value, IntNode leftNode, IntNode rightNode) {
-            setData(value);
-            setLeftNode(leftNode);
-            setRightNode(rightNode);
-        }
-
-        private int getData() {
-            return data;
-        }
-
-        private void setData(int value) {
-            data = value;
-        }
-
-        private IntNode getLeftNode() {
-            return leftIntNode;
-        }
-
-        private void setLeftNode(IntNode leftNode) {
-            leftIntNode = leftNode;
-        }
-
-        private IntNode getRightNode() {
-            return rightIntNode;
-        }
-
-        private void setRightNode(IntNode rightNode) {
-            rightIntNode = rightNode;
-        }
-
-    }
-
-    private IntNode rootNode;
+    private Node<Integer> rootNode;
 
     ArbreBinaire() {
         setRootNode(null);
     }
 
-    private void setRootNode(IntNode node) {
+    private void setRootNode(Node<Integer> node) {
         rootNode = node;
     }
 
-    private IntNode getRootNode() {
+    private Node<Integer> getRootNode() {
         return rootNode;
     }
 
@@ -66,10 +22,11 @@ public class ArbreBinaire {
         return (getRootNode() == null);
     }
 
-    private IntNode inserer_rec(IntNode currentNode, int value) {
+    private Node<Integer> inserer_rec(Node<Integer> currentNode, int value) {
         if (currentNode == null) {
-            return new IntNode(value);
-        } else if (value < currentNode.getData()) {
+            return new Node<Integer>(value);
+        }
+        if (value < currentNode.getData()) {
             currentNode.setLeftNode(inserer_rec(currentNode.getLeftNode(), value));
         } else if (value > currentNode.getData()) {
             currentNode.setRightNode(inserer_rec(currentNode.getRightNode(), value));
@@ -81,10 +38,11 @@ public class ArbreBinaire {
         setRootNode(inserer_rec(rootNode, value));
     }
 
-    private IntNode supprimer_rec(IntNode currentNode, int value) {
+    private Node<Integer> supprimer_rec(Node<Integer> currentNode, int value) {
         if (currentNode == null) {
             return null;
-        } else if (value == currentNode.getData()) {
+        }
+        if (value == currentNode.getData()) {
             if (currentNode.getLeftNode() == null && currentNode.getRightNode() == null) {
                 return null;
             } else if (currentNode.getRightNode() == null) {
@@ -115,7 +73,7 @@ public class ArbreBinaire {
         supprimer_rec(rootNode, value);
     }
 
-    private boolean hasDataRec(IntNode currentNode, int value) {
+    private boolean hasDataRec(Node<Integer> currentNode, int value) {
         if (currentNode == null) {
             return false;
         }
@@ -129,11 +87,11 @@ public class ArbreBinaire {
         return hasDataRec(rootNode, value);
     }
 
-    private int findSmallestData(IntNode node) {
+    private int findSmallestData(Node<Integer> node) {
         return node.getLeftNode() == null ? node.getData() : findSmallestData(node.getLeftNode());
     }
 
-    private void afficher_rec(IntNode currentNode) {
+    private void afficher_rec(Node<Integer> currentNode) {
         if (currentNode != null) {
             afficher_rec(currentNode.getLeftNode());
             System.out.print(currentNode.getData() + " ");
@@ -146,12 +104,10 @@ public class ArbreBinaire {
         System.out.println();
     }
 
-    private void afficher_arbre_rec(IntNode currentNode, int column) {
-        int i;
-
+    private void afficher_arbre_rec(Node<Integer> currentNode, int column) {
         if (currentNode != null) {
             afficher_arbre_rec(currentNode.getRightNode(), column + 1);
-            for (i = 0; i < column; i++) {
+            for (int i = 0; i < column; i++) {
                 System.out.print("   ");
             }
             System.out.println(currentNode.getData());
@@ -164,37 +120,39 @@ public class ArbreBinaire {
     }
 
     public static void main(String[] args) {
-        ArbreBinaire Btree = new ArbreBinaire();
+        ArbreBinaire bTree = new ArbreBinaire();
 
-        Btree.inserer(2);
-        Btree.inserer(6);
-        Btree.inserer(4);
-        Btree.inserer(5);
-        Btree.inserer(1);
-        Btree.inserer(0);
+        bTree.inserer(2);
+        bTree.inserer(6);
+        bTree.inserer(4);
+        bTree.inserer(5);
+        bTree.inserer(1);
+        bTree.inserer(0);
 
-        Btree.afficher();
-        Btree.afficher_arbre();
+        bTree.afficher();
+        bTree.afficher_arbre();
 
-        Btree.supprimer(4);
+        bTree.supprimer(4);
 
-        Btree.afficher();
-        Btree.afficher_arbre();
+        bTree.afficher();
+        bTree.afficher_arbre();
 
-        Btree.supprimer(6);
+        bTree.supprimer(6);
 
-        Btree.afficher();
-        Btree.afficher_arbre();
+        bTree.afficher();
+        bTree.afficher_arbre();
 
-        Btree.inserer(2);
-        Btree.inserer(7);
-        Btree.inserer(3);
-        Btree.inserer(9);
-        Btree.inserer(11);
-        Btree.inserer(10);
+        bTree.inserer(2);
+        bTree.inserer(7);
+        bTree.inserer(3);
+        bTree.inserer(9);
+        bTree.inserer(11);
+        bTree.inserer(10);
+        bTree.inserer(8);
+        bTree.inserer(4);
 
-        Btree.afficher();
-        Btree.afficher_arbre();
+        bTree.afficher();
+        bTree.afficher_arbre();
     }
 
 }