+1 (315) 557-6473 

Program To Implement a Binary Tree GUI Using Java Programming Language Assignment Solutions.


Instructions

Objective
Write a java assignment program to implement a binary tree GUI in programming language.

Requirements and Specifications

Implement binary tree GUI in Java programming language
Implement binary tree GUI in Java programming language 1
Implement binary tree GUI in Java programming language 2
Implement binary tree GUI in Java programming language 3
Implement binary tree GUI in Java programming language 4

Source Code

import javafx.application.Application;

import javafx.stage.Stage;

import javafx.scene.layout.*;

import javafx.scene.*;

import javafx.scene.input.*;

import java.util.Random;

import javafx.scene.control.*;

public class MyLab9 extends Application {

    public static final int SCENE_WIDTH = 1024;

    public static final int SCENE_HEIGHT = 640;

    public static final int MAX_VALUE = Short.MAX_VALUE;

    public void start(Stage primaryStage)

    {

        Pane pane = new Pane();

        MyTreeSetLab9 myTree = new MyTreeSetLab9();

        Random rand = new Random();

        pane.setOnMouseClicked(evt -> {

            if (evt.getButton() == MouseButton.SECONDARY) {

                int rint = rand.nextInt(MAX_VALUE);

                System.out.print("Adding " + rint + "...");

                boolean result = myTree.add(rint);

                System.out.println(result ? "good" : "bad");

                System.out.println(myTree);

            }

        });

        pane.getChildren().add(myTree);

        Scene scene = new Scene(pane, SCENE_WIDTH, SCENE_HEIGHT);

        primaryStage.setScene(scene);

        primaryStage.setTitle("271 Lab-niner");

        primaryStage.show();

    }

}

TREE

import javafx.scene.layout.Pane;

import javafx.scene.shape.*;

import javafx.scene.paint.Color;

import javafx.scene.text.*;

import java.util.ArrayList;

import java.util.List;

import java.util.Random;

import java.util.stream.Collectors;

public class MyTreeSetLab9 extends Pane {

    private MyNode root;

    private class MyNode {

        final T data;

        final MyNode parent;

        MyNode leftChild;

        MyNode rightChild;

        Circle circle;

        Line edge;

        Text text;

        public MyNode(T data, MyNode parent) {

            this.data = data;

            this.parent = parent;

            text = new Text(data.toString());

            text.setFont(new Font(16));

            Random random = new Random();

            double textWidth = text.getLayoutBounds().getWidth();

            double textHeight = text.getLayoutBounds().getHeight();

            double radius = Math.max(30, text.getLayoutBounds().getWidth() / 2 + 5);

            circle = new Circle(random.nextInt(MyLab9.SCENE_WIDTH), random.nextInt(MyLab9.SCENE_HEIGHT), radius);

            circle.setFill(Color.WHITE);

            circle.setStroke(parent == null ? Color.RED : Color.BLACK);

            MyTreeSetLab9.this.getChildren().add(circle);

            circle.setOnMouseDragged(evt -> {

                double mouseX = evt.getX(),

                        mouseY = evt.getY();

                circle.setCenterX(mouseX);

                circle.setCenterY(mouseY);

            });

            text.xProperty().bind(circle.centerXProperty().subtract(textWidth / 2));

            text.yProperty().bind(circle.centerYProperty().add(textHeight / 4));

            MyTreeSetLab9.this.getChildren().add(text);

            if (parent != null) {

                edge = new Line();

                edge.startXProperty().bind(parent.circle.centerXProperty());

                edge.startYProperty().bind(parent.circle.centerYProperty());

                edge.endXProperty().bind(circle.centerXProperty());

                edge.endYProperty().bind(circle.centerYProperty());

                MyTreeSetLab9.this.getChildren().add(edge);

                edge.toBack();

            }

        }

    }

    public boolean add(T addMe) {

        if (root == null) {

            root = new MyNode(addMe, null);

            return true;

        }

        Random random = new Random();

        int bits = 0;

        MyNode currentNode = root;

        for (int parentLevel = 0; ; parentLevel++) {

            if (parentLevel % 8 == 0) {

                bits = random.nextInt();

            }

            if ((bits & 1) == 0) {

                if (currentNode.leftChild == null) {

                    currentNode.leftChild = new MyNode(addMe, currentNode);

                    break;

                }

                currentNode = currentNode.leftChild;

            } else {

                if (currentNode.rightChild == null) {

                    currentNode.rightChild = new MyNode(addMe, currentNode);

                    break;

                }

                currentNode = currentNode.rightChild;

            }

            bits = bits >> 1;

        }

        return true;

    }

    @Override

    public String toString() {

        List nodesPreOrder = new ArrayList<>();

        collectPreOrderTraversal(nodesPreOrder, root);

        return "[" +

                nodesPreOrder.stream().map(node -> node.data.toString()).collect(Collectors.joining(", ")) +

                "]";

    }

    private void collectPreOrderTraversal(List collection, MyNode current) {

        if (current != null) {

            collection.add(current);

            collectPreOrderTraversal(collection, current.leftChild);

            collectPreOrderTraversal(collection, current.rightChild);

        }

    }

}