eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingCiekawy problem iteracyjnego zwalniania głębokiego drzewaRe: Ciekawy problem iteracyjnego zwalniania głębokiego drzewa
  • Data: 2017-08-14 18:56:57
    Temat: Re: Ciekawy problem iteracyjnego zwalniania głębokiego drzewa
    Od: Borneq <b...@a...hidden.pl> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    W dniu 14.08.2017 o 17:50, M.M. pisze:
    > Bez debugowania tak:
    > remove( node ) {
    > while( node ) {


    Poprawiona metoda działa, ale zagłębia się za bardzo, bo często
    childCount > 1, tyle że inne gałęzie są krótkie a jedna czy kilka długie.

    void remove(Node *node)
    {
    while (true) {
    int childCount = 0;
    int numberOneChild = -1;
    for (int i = 0; i < 3; i++)
    {
    if (node->children[i])
    {
    childCount++;
    numberOneChild = i;
    }
    }

    if (childCount > 1)
    {
    for (int i = 0; i < 3; i++)
    if (node->children[i])
    {
    tuheight++;
    remove(node->children[i]);
    tuheight--;
    }
    delete node;
    return; //<--- z debugowania wychodzi tu return
    }
    else if (childCount == 1)
    {
    Node *tmp = node;
    node = node->children[numberOneChild];
    delete tmp;
    }
    else
    {
    delete node;
    return;
    }
    }
    }

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: