Создайте бинарное дерево с левой стороной меньше и правой стороной - PullRequest
0 голосов
/ 17 апреля 2020

Я пытаюсь создать двоичное дерево, в котором левый узел будет меньше, а правый узел больше.

Я застрял, как действовать дальше.

Код

public class Node {

    public int keyValue;
    public Node leftNode;
    public Node rightNode;

    public Node(int nodeNum) {

        this.keyValue = nodeNum;
        this.leftNode = this.rightNode = null;
    }

}

BinaryTree

import java.util.Scanner;

public class BinaryTree {

    public Node root;

    BinaryTree() {
        root = null;
    }

    public static void main(String[] args) {

        Scanner in = new Scanner(System.in);
        int nodeCounts = in.nextInt();
        int[] nodes = new int[nodeCounts];

        for (int i = 0; i < nodeCounts; i++) {

            nodes[i] = in.nextInt();
        }

        BinaryTree bt = new BinaryTree();
        bt.createBinaryTree(nodes);

    }

    public void createBinaryTree(int[] nodeValues) {

        for (int i = 0; i < nodeValues.length; i++) {

            this.attachNodes(new Node(i));

        }
    }

    public void attachNodes(Node node) {

        if (this.root == null) {

            this.root = node;

        }

        else if (this.root.leftNode == null) {

        }

        else if (this.root.rightNode == null) {

        }

    }

}

Не понимаю, как добраться до точки, где узел имеет нулевое значение, и соответствующим образом разместить значение рекурсивно.

Как мне добраться до последнего уровня, где значение узла равно нулю? Когда я доберусь туда, я смогу разместить значения моего узла.

Подскажите пожалуйста.

...