Advertisement
Guest User

Untitled

a guest
Dec 7th, 2016
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.91 KB | None | 0 0
  1. package assignment04;
  2.  
  3. import java.util.ArrayList;
  4.  
  5. import javafx.application.Application;
  6. import javafx.geometry.Pos;
  7. import javafx.stage.Stage;
  8. import javafx.scene.Scene;
  9. import javafx.scene.control.Button;
  10. import javafx.scene.control.Label;
  11. import javafx.scene.control.TextField;
  12. import javafx.scene.layout.BorderPane;
  13. import javafx.scene.layout.HBox;
  14.  
  15. public class BSTAnimation extends Application {
  16. @Override // Override the start method in the Application class
  17. public void start(Stage primaryStage) {
  18. BST<Integer> tree = new BST<>(); // Create a tree
  19.  
  20. BorderPane pane = new BorderPane();
  21. BTView view = new BTView(tree); // Create a View
  22. pane.setCenter(view);
  23.  
  24. TextField tfKey = new TextField();
  25. tfKey.setPrefColumnCount(3);
  26. tfKey.setAlignment(Pos.BASELINE_RIGHT);
  27. Button btInsert = new Button("Insert");
  28. Button btDelete = new Button("Delete");
  29. Button search = new Button("Search");
  30. Button inOrder = new Button("Inorder");
  31. Button preOrder = new Button("Preorder");
  32. Button postOrder = new Button("Postorder");
  33. Button breadthFirst = new Button("Breadth-First");
  34. Button height = new Button("Height");
  35. Button clear = new Button("Clear");
  36. HBox hBox = new HBox(5);
  37. hBox.getChildren().addAll(new Label("Enter a key: "),
  38. tfKey, btInsert, btDelete, search, inOrder,
  39. preOrder, postOrder, breadthFirst, height, clear);
  40. hBox.setAlignment(Pos.CENTER);
  41. pane.setBottom(hBox);
  42.  
  43. btInsert.setOnAction(e -> {
  44. int key = Integer.parseInt(tfKey.getText());
  45. if (tree.search(key)) { // key is in the tree already
  46. view.displayTree();
  47. view.setStatus(key + " is already in the tree");
  48. }
  49. else {
  50. tree.insert(key); // Insert a new key
  51. view.displayTree();
  52. view.setStatus(key + " is inserted in the tree");
  53. }
  54. });
  55.  
  56. btDelete.setOnAction(e -> {
  57. int key = Integer.parseInt(tfKey.getText());
  58. if (!tree.search(key)) { // key is not in the tree
  59. view.displayTree();
  60. view.setStatus(key + " is not in the tree");
  61. }
  62. else {
  63. tree.delete(key); // Delete a key
  64. view.displayTree();
  65. view.setStatus(key + " is deleted from the tree");
  66. }
  67. });
  68.  
  69. search.setOnAction(e -> {
  70. int key = Integer.parseInt(tfKey.getText());
  71. ArrayList<BST.TreeNode<Integer>> path = tree.path(key);
  72. if(!tree.search(key))
  73. {
  74. view.displayTree(path);
  75. view.setStatus(key + " is not in the tree");
  76. }
  77. else
  78. {
  79. view.displayTree(path);
  80. view.setStatus("Found " + key + " in the tree");
  81. }
  82. });
  83.  
  84. inOrder.setOnAction(e -> {
  85. view.displayTree();
  86. view.setStatus("" + tree.inorderList());
  87. });
  88.  
  89. postOrder.setOnAction(e -> {
  90. view.displayTree();
  91. view.setStatus("" + tree.preorderList());
  92. });
  93.  
  94. preOrder.setOnAction(e -> {
  95. view.displayTree();
  96. view.setStatus("" + tree.postorderList());
  97. });
  98.  
  99. breadthFirst.setOnAction(e -> {
  100. view.displayTree();
  101. view.setStatus("" + tree.breadthFirstOrderList());
  102. });
  103.  
  104. height.setOnAction(e -> {
  105. int tHeight = tree.height() - 1;
  106. view.displayTree();
  107. view.setStatus("Tree height is " + tHeight);
  108. });
  109.  
  110. clear.setOnAction(e -> {
  111. tree.clear();
  112. view.displayTree();
  113. view.setStatus("Tree has been cleared");
  114. });
  115.  
  116. // Create a scene and place the pane in the stage
  117. Scene scene = new Scene(pane, 750, 350);
  118. primaryStage.setTitle("BSTAnimation"); // Set the stage title
  119. primaryStage.setScene(scene); // Place the scene in the stage
  120. primaryStage.show(); // Display the stage
  121. }
  122.  
  123. /**
  124. * The main method is only needed for the IDE with limited
  125. * JavaFX support. Not needed for running from the command line.
  126. */
  127. public static void main(String[] args) {
  128. launch(args);
  129. }
  130. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement