Drzewo wyższego rzędu

0

Witam, chcę zrobić drzewo wyższego rzędu i dodawać do niego wartości po czym sprawdzać czy mając wartości x i y to czy y znajduję się w poddrzewie w którym x jest korzeniem. Napisałem coś takiego i z chęcią posłuchałbym jak poprawić pojawiające się błędy.

class wezel
{ 
	public:
   unsigned long int wartosc; 
   wezel *dzieci[100000];
	wezel *rodzic;
	void Add(unsigned long int parent, unsigned long int ja);
	bool Search(unsigned long int przodek, unsigned long int potomek, unsigned long int n);
};

void wezel::Add(unsigned long int parent, unsigned long int ja) 
{ 
			unsigned long int i, j;
			unsigned long stan[ja];
			
			for(i = 0; i < ja; i++)
				stan[i] = 0;
		
			wezel temp;
			wezel temp = this;
		
			for (i = 0; i < ja; i++)
			{
				if (temp.wartosc != parent)
				{
					for (j = stan[i]; j < 100000; j++)
					{
						if (temp.dzieci[j] != NULL)
						{
							temp = temp.dzieci[j];
							stan[i] = j;
							break;
						}
						if (temp.dzieci[j] == NULL)
						{
							temp = temp.rodzic;
							i--;
						}
					}
				}
				else
				{
					for (j = 0; j < 100000; j++)
					{
						if (temp.dzieci[j] == NULL)
						{
							temp.dzieci[j].wartosc = ja;
							for (i = 0; i < 100000; i++)
								temp.dzieci[j].dzieci[i] = NULL;
							break;
						}
					}
				}
			}
}
   		
bool wezel::Search(unsigned long int przodek, unsigned long int potomek, unsigned long int n) 
{ 
			unsigned long int i;
			unsigned long int j;
			unsigned long stan[n];
		
			for(i = 0; i < n; i++)
				stan[i] = 0;
			wezel temp;
			wezel temp = this;


			for (i = 0; i < n; i++)
			{
				if (temp.wartosc != przodek)
				{
					for (j = stan[i]; j < 100000; j++)
					{
						if (temp.dzieci[j] != NULL)
						{
							temp = temp.dzieci[j];
							stan[i] = j;
							break;
						}
						if (temp.dzieci[j] == NULL)
						{
							temp = temp.rodzic;
							i--;
						}
					}
				}
				else
				{
					for (j = 0; j < 100000; j++)
					{
						if (temp.dzieci[j] == potomek)
						{
							return true;
						}
					}
				}
			}
			
			return false;
} 
0
new napisał(a)

Witam, chcę zrobić drzewo wyższego rzędu i dodawać do niego wartości po czym sprawdzać czy mając wartości x i y to czy y znajduję się w poddrzewie w którym x jest korzeniem. Napisałem coś takiego i z chęcią posłuchałbym jak poprawić pojawiające się błędy.

moze zacznij od:

  • wyslowienia sie, jakie sa te bledy?
  • wyjasnienia, czym jest "drzewo wyższego rzędu"? ja tu widze tylko fragment zwyklego drzewa

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.