binarne drzewo losowe RBT

0

Cześć, mamy do napisania drzewko którego polecenie brzmi tak:
Napisz klasę realizującą losowe drzewo binarne RBT. Klasa powinna umożliwiać przeglądanie drzewa, dopisywanie do niego losowych wartości (parametry N, p, MAX), wyszukiwanie elementu oraz usuwanie drzewa.
2) Przetestuj klasę z punktu pierwszego, pisząc odpowiedni program dopisujący elementy do drzewa, przeglądający drzewo, wyszukujący element w drzewie oraz usuwający drzewo.
3) Opracuj metodę usuwającą pojedynczy element z drzewa RBT

generalnie napisaliśmy już część, ale tu przychodzi brak pomysłu.Jak zaimplementować do kodu parametr p który mówi nam ile konkretnie wartości ma być po prawej stronie? Poniżej wklejam kod(nie wiem czy dobrze.)

import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.Scanner;

public class RandomBinaryTree {

public static void main(String[] args) {

   // System.out.println("cześć podaj liczbę elementów drzewa");
   // Scanner odczyt = new Scanner(System.in);
    // n =odczyt.nextInt();
   // n=(n/2);
    RandomBinaryTree w = new RandomBinaryTree();
    wezęł tree = w.randomBinaryTree(n+2);
    w.visitInOrder(tree);


}

private void visitInOrder(wezęł tree) {
    if (tree == null) return;
    visitInOrder(tree.left);
    StringBuilder s=new StringBuilder();
    if (tree.d==0) {
        s.append(0 + "[root] ");
    } else if ( tree.left== null && tree.right== null){
        s.append(tree.d+"[wartość] ");
    }else {
        s.append(tree.d+"[liść] ");
    }
    System.out.print (s.toString());
    visitInOrder(tree.right);
}


wezęł randomBinaryTree(int n) {
    List<wezęł> wezęłList = new ArrayList<>();
    int wezęłIndex = 0;
    wezęł root = wezęł.of(wezęłIndex++);
    wezęł firstLeaf = wezęł.of(wezęłIndex++);
    wezęł secondLeaf = wezęł.of(wezęłIndex++);
    root.left = firstLeaf;
    root.right = secondLeaf;
    wezęłList.add(firstLeaf);
    wezęłList.add(secondLeaf);
    Random random = new Random();

    while (wezęłList.size() < n + 1) {
        int nextInternalwezęłIndex = random.nextInt(wezęłList.size());
        wezęł internalwezęł = wezęłList.get(nextInternalwezęłIndex);
        internalwezęł.left = wezęł.of(wezęłIndex++);
        internalwezęł.right = wezęł.of(wezęłIndex++);
        wezęłList.remove(nextInternalwezęłIndex);
        wezęłList.add(internalwezęł.left);
        wezęłList.add(internalwezęł.right);
    }
    return root;

}

static class wezęł {
    int d;
    wezęł left, right;

    static wezęł of(int v) {
        return new wezęł(v);
    }

    wezęł(int v) {
        this.d = v;
    }
}

}

0

"parametr p który mówi nam ile konkretnie wartości ma być po prawej stronie?". Co to znaczy, co konkretnie ma ten parametr zwracać?

1 użytkowników online, w tym zalogowanych: 0, gości: 1