Witam mam napisac program który implementuje drzewa BST jednakże jest to zadanie na studia więc jest z góry narzucona struktura kodu mianowicie
public abstract class BinaryTreeNode {
//wartosc w wezle
protected int dane;
//prawe i lewe poddrzewo
protected BinaryTreeNode lewy, prawy;
public BinaryTreeNode(int dane) {
this.dane = dane;
}
/* Wypisuje drzewo np. dla drzewa
8
3 5
2 1 4 0
wypisac:
2
3
1
8
4
5
0
wypisz lewe
wypisz odstep, wypisz dane, endl
wypisz prawe
*/
public abstract void print(int poziom);
//rekurencyjne przeszukuje drzewo BST, zwraca true, jesli znajdzie element o podanej wartosci
public abstract boolean searchBSTRec(int szukany);
//rekurencyjnie dodaje element do drzewa BST
public abstract void addBSTRec(int nowy);
//zwraca pare: wezel zawierajacy poszukiwany element oraz jego poprzednika
//jesli szukanego elementu nie ma w drzewie, to pierwszym elementem pary jest null
//jesli pierwszy element pary jest korzeniem (nie ma poprzednika), to drugim elementem pary jest null
public abstract Pair < BinaryTreeNode, BinaryTreeNode > searchBST(int szukany);
}
i mam napisac metode która doda mi element do drzewa naskrobałem tyle i zatrzymałem się bo nie wiem kiedy mam dodawać na prawą strone drzewa a kiedy na lewą
o oto co napisałem sam
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package drzewabst;
/**
*
* @author Patryk
*/
public class Lab8 extends BinaryTreeNode{
private Lab8 korzen = null;
public Lab8(int dane) {
super(dane);
}
@Override
public void addBSTRec(int nowy) {
if(korzen == null){
korzen = new Lab8(nowy);
}
// tu nie wiem kiedy dodawać na prawą strone drzewa a kiedy na lewa
}
}
może mi ktoś pomóc naprowadzić ?