From e40bbe4479ebc5a221369b3b9a5275f5cfe5ded0 Mon Sep 17 00:00:00 2001 From: AlexVelezLl Date: Tue, 12 May 2020 11:47:50 -0500 Subject: [PATCH 1/2] Add README.md --- README.md | 87 +++++++++++++++++++++++++++++++++++++++++++++++ captures/App.png | Bin 0 -> 20542 bytes 2 files changed, 87 insertions(+) create mode 100644 README.md create mode 100644 captures/App.png diff --git a/README.md b/README.md new file mode 100644 index 0000000..80b912b --- /dev/null +++ b/README.md @@ -0,0 +1,87 @@ +# AVL TREE + +[![language][language-shield]][language-url] +[![Codacy Badge][codacybadge-shield]][codacybadge-url] +[![repoSize][repoSize-shield]][repo] +[![Contributors][contributors-shield]][contributors-url] +[![forks][forks-shield]][forks-url] +[![Stargazers][stars-shield]][stars-url] +[![Issues][issues-shield]][issues-url] +[![lastCommit][lastCommit-shield]][lastCommit-url] +[![LinkedIn][linkedin-shield]][linkedin-url] +[![Twitter][twitter-shield]][twitter-url] + +**AVL TREE** is an application developed on Java that simulate the behavior of an Avl Tree, with the aim of the user learn in a better way how an Avl works. + +![TheTree](./captures/App.png) + +## The Tree + +The Avl tree is a search binary tree wich we can use to represent information hierarchically. This tree is also self balancing, that means that the tree is always balanced, in such a way that for every node the difference of the heigh of left branch and the heigh of right branch is at most one. + +The representation of the avl tree in this application is only to save integers, but in an Avl Tree you can save any data type that can be comparable. + +### Rules + +As [freecodecamp](https://www.freecodecamp.org/news/avl-tree-insertion-rotation-and-balance-factor/) describes, a search binary tree is a TDA composed of nodes that have the following rules: + +1. Each has a root node at the top. + +2. Every node has at the most, two children. + +3. Every node has only one parent (the root is the one node that has no parents). + +4. For each node, its left child is less or equal than the node, wich is less or equal than its right child. + +And the Avl tree has additionally this rule: + +1.- The difference between the depth of right and left subtrees cannot be more than one. In order to maintain this guarantee, an implementation of an AVL will include an algorithm to rebalance the tree when adding an additional element would upset this guarantee. + +There are several algotihm to aim that, a few of these are: LL rotation, RR rotation, LR rotation and RL rotation, you can watch all these algorithsm to balance the tree in this [video](https://www.youtube.com/watch?v=7m94k2Qhg68). + +## Avl-tree 🔥 + +In this aplication you have three options to experiment with the tree, you have the option to add a new node, the option to remove a node, and you can also clear the tree removing all the nodes of the current tree. + +The aplication behind the scenes will aply all the rules and algorithms to keep balanced the tree. + +## Prerequisites 📋 + +You should have the java virtual machine installed(JVM) on your computer to run the game, if you do not have the java virtual machine you could install it from [here](https://www.java.com/es/download/). + +### Installation 🔧 + +You only need to download this project. +To run the game you need to get into the folder "dist", which is in the root directory, and then execute the "Avl-Tree.jar" file. + +Or you can also run this from the shell, you need to cd to the project folder, and then execute: + +```bash +java -jar dist/Avl-Tree.jar +``` + +## Built with 🛠️ + +* Java8 +* JavaFx + +[language-shield]: https://img.shields.io/badge/Java-v1.8.0-blue?style=plastic +[language-url]: https://www.java.com/es/download/ +[codacybadge-shield]: https://img.shields.io/codacy/grade/3c17ebf7c1954006a60b08b8af2c58e2?style=plastic +[codacybadge-url]: https://www.codacy.com/manual/AlexVelezLl/AVL-TREE?utm_source=github.com&utm_medium=referral&utm_content=AlexVelezLl/AVL-TREE&utm_campaign=Badge_Grade +[repoSize-shield]: https://img.shields.io/github/repo-size/AlexVelezLl/AVL-TREE?style=plastic +[repo]: https://github.com/AlexVelezLl/AVL-TREE +[contributors-shield]: https://img.shields.io/github/contributors/AlexVelezLl/AVL-TREE?style=plastic +[contributors-url]: https://github.com/AlexVelezLl/AVL-TREE/graphs/contributors +[forks-shield]: https://img.shields.io/github/forks/AlexVelezLl/AVL-TREE?style=plastic +[forks-url]: https://github.com/AlexVelezLl/AVL-TREE/network/members +[stars-shield]: https://img.shields.io/github/stars/AlexVelezLl/AVL-TREE?style=plastic +[stars-url]: https://github.com/AlexVelezLl/AVL-TREE/stargazers +[issues-shield]: https://img.shields.io/github/issues/AlexVelezLl/AVL-TREE?style=plastic +[issues-url]: https://github.com/AlexVelezLl/AVL-TREE/issues +[lastCommit-shield]: https://img.shields.io/github/last-commit/AlexVelezLl/AVL-TREE?style=plastic +[lastCommit-url]: https://github.com/AlexVelezLl/AVL-TREE/commits +[linkedin-shield]: https://img.shields.io/badge/-LinkedIn-black.svg?style=plastic&logo=linkedin&colorB=555 +[linkedin-url]:https://www.linkedin.com/in/alex-velez-llaque-4b3327191/ +[twitter-shield]:https://img.shields.io/twitter/follow/AlexVelezLl?label=Follow&style=social +[twitter-url]:https://twitter.com/AlexVelezLl diff --git a/captures/App.png b/captures/App.png new file mode 100644 index 0000000000000000000000000000000000000000..667870a2ccc6e4f133d1a0136d282d623cbf3cc5 GIT binary patch literal 20542 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 Date: Tue, 12 May 2020 15:14:47 -0500 Subject: [PATCH 2/2] Accion de insertar y eliminar lanzadas con enter si lo escribe en su respectivo textfield. Controlando Excepciones --- src/Interfaz/InterfazArbol.java | 103 +++++++++++++++++++++----------- 1 file changed, 67 insertions(+), 36 deletions(-) diff --git a/src/Interfaz/InterfazArbol.java b/src/Interfaz/InterfazArbol.java index 9c76040..413fec5 100644 --- a/src/Interfaz/InterfazArbol.java +++ b/src/Interfaz/InterfazArbol.java @@ -7,10 +7,13 @@ import javafx.application.Platform; import javafx.geometry.Pos; +import javafx.scene.control.Alert; import javafx.scene.control.Button; import javafx.scene.control.Label; import javafx.scene.control.ScrollPane; import javafx.scene.control.TextField; +import javafx.scene.control.Alert.AlertType; +import javafx.scene.input.KeyCode; import javafx.scene.layout.HBox; import javafx.scene.layout.Pane; import javafx.scene.layout.StackPane; @@ -29,10 +32,16 @@ public class InterfazArbol { private Pane root; private AVL avlTree; private ScrollPane sp; + private final TextField txtInsertar; + private final TextField txtDelete; + StackPane arbol; public InterfazArbol() { root = new VBox(); + txtInsertar = new TextField(); + txtDelete = new TextField(); avlTree = new AVL<>(Integer::compareTo); + arbol = new StackPane(); sp = new ScrollPane(); createRoot(); } @@ -51,9 +60,17 @@ private void createRoot() { HBox hbOpc = new HBox(); hbOpc.setAlignment(Pos.CENTER); hbOpc.setTranslateY(6); - TextField txtInsertar = new TextField(); + txtInsertar.setOnKeyPressed(e -> { + if (e.getCode() == KeyCode.ENTER) { + insertar(); + } + }); + txtDelete.setOnKeyPressed(e->{ + if(e.getCode()==KeyCode.ENTER){ + eliminar(); + } + }); Button btnInsertar = new Button("Insertar"); - TextField txtDelete = new TextField(); Button btnDelete = new Button("Eliminar"); HBox hbInst = new HBox(); hbInst.getChildren().addAll(txtInsertar, btnInsertar); @@ -70,7 +87,6 @@ private void createRoot() { optRect.setFill(Color.CADETBLUE); StackPane optStck = new StackPane(); optStck.getChildren().addAll(optRect, hbOpc); - StackPane arbol = new StackPane(); arbol.setMinHeight(200); arbol.setMinWidth(1366); arbol.setMinWidth(avlTree.height() * 100); @@ -85,42 +101,11 @@ private void createRoot() { sp.setMinHeight(500); sp.setMaxHeight(500); btnInsertar.setOnAction(e -> { - Integer num = 0; - try { - num = Integer.parseInt(txtInsertar.getText()); - txtInsertar.setText(""); - txtInsertar.requestFocus(); - avlTree.insert(num); - - arbol.getChildren().clear(); - Pane avlPane = avlTree.mostrarArbol(); - if (avlTree.height() <= 7) - avlPane.setTranslateX(100 * (7 - avlTree.height())); - arbol.getChildren().add(avlPane); - arbol.setMinWidth(avlTree.height() * 100); - } catch (Exception ex) { - - } - + insertar(); }); btnDelete.setOnMouseClicked(e -> { - Integer num = 0; - try { - num = Integer.parseInt(txtDelete.getText()); - txtDelete.setText(""); - txtDelete.requestFocus(); - avlTree.delete(num); - arbol.getChildren().clear(); - Pane avlPane = avlTree.mostrarArbol(); - if (avlTree.height() <= 7) - avlPane.setTranslateX(100 * (7 - avlTree.height())); - arbol.getChildren().add(avlPane); - arbol.setMinWidth(avlTree.height() * 100); - - } catch (Exception ex) { - - } + eliminar(); }); StackPane pnSalir = new StackPane(); @@ -138,6 +123,52 @@ private void createRoot() { } + private void eliminar() { + Integer num = 0; + try { + num = Integer.parseInt(txtDelete.getText()); + txtDelete.setText(""); + txtDelete.requestFocus(); + avlTree.delete(num); + arbol.getChildren().clear(); + Pane avlPane = avlTree.mostrarArbol(); + if (avlTree.height() <= 7) + avlPane.setTranslateX(100 * (7 - avlTree.height())); + arbol.getChildren().add(avlPane); + arbol.setMinWidth(avlTree.height() * 100); + + } catch (Exception ex) { + Alert alerta = new Alert(AlertType.ERROR); + alerta.setTitle("Error"); + alerta.setContentText("Por favor ingrese un numero valido"); + alerta.showAndWait(); + } + + } + + private void insertar() { + Integer num = 0; + try { + num = Integer.parseInt(txtInsertar.getText()); + txtInsertar.setText(""); + txtInsertar.requestFocus(); + avlTree.insert(num); + + arbol.getChildren().clear(); + Pane avlPane = avlTree.mostrarArbol(); + if (avlTree.height() <= 7) + avlPane.setTranslateX(100 * (7 - avlTree.height())); + arbol.getChildren().add(avlPane); + arbol.setMinWidth(avlTree.height() * 100); + } catch (Exception ex) { + // Si la tecla que inserto no es ningun numero + Alert alert = new Alert(AlertType.ERROR); + alert.setTitle("WOOPS!"); + alert.setContentText("Por favor ingrese un numero valido."); + alert.showAndWait(); + } + } + public Pane getRoot() { return root; }