Hei, lenge siden sist..
Jeg sitter her å fomler noe insane for å prøve å lage et generelt binært tre ved hjelp av kun et array.
Måten jeg har tenkt å gjøre det på er da og la Arr[0] = root, Arr[1] = leftnode, Arr[2] = rightnode osv.. eksempel på hva jeg mener:
A
/ \
B C
/ /\
2 5 3
Blir da [A,B,C,2,null,5,3] ..
Problemet er at jeg ikke klarer å tenke meg til hvordan jeg skal få dette implementert i insertRight, insertLeft metodene mine..
public void insertLeft(int node, E element)
{
if(node == 0)
{
S[1] = element;
_size++;
}
else
{
S[node+2] = element;
_size++;
}
}
public void insertRight(int node, E element)
{
if(node == 0)
{
S[2] = element;
_size++;
}
else
{
S[node+3] = element;
_size++;
}
Det som følgelig skjer her er at de overskriver hverandre innimellom, og det må ikke skje.. noen som kan hjelpe meg litt på vei her eller? Ville satt pris på det..
Btw, glemte å nevne at det skal ikke brukes faste plasser til nodene i tabellen, slik at 2i+1 for venstrenoder, og 2i+2 for høyrenoder er utelukket som alternativ
Jeg sitter her å fomler noe insane for å prøve å lage et generelt binært tre ved hjelp av kun et array.
Måten jeg har tenkt å gjøre det på er da og la Arr[0] = root, Arr[1] = leftnode, Arr[2] = rightnode osv.. eksempel på hva jeg mener:
A
/ \
B C
/ /\
2 5 3
Blir da [A,B,C,2,null,5,3] ..
Problemet er at jeg ikke klarer å tenke meg til hvordan jeg skal få dette implementert i insertRight, insertLeft metodene mine..
public void insertLeft(int node, E element)
{
if(node == 0)
{
S[1] = element;
_size++;
}
else
{
S[node+2] = element;
_size++;
}
}
public void insertRight(int node, E element)
{
if(node == 0)
{
S[2] = element;
_size++;
}
else
{
S[node+3] = element;
_size++;
}
Det som følgelig skjer her er at de overskriver hverandre innimellom, og det må ikke skje.. noen som kan hjelpe meg litt på vei her eller? Ville satt pris på det..
Btw, glemte å nevne at det skal ikke brukes faste plasser til nodene i tabellen, slik at 2i+1 for venstrenoder, og 2i+2 for høyrenoder er utelukket som alternativ