eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingJaki algorytm do komponentu drzewka?Jaki algorytm do komponentu drzewka?
  • Data: 2015-03-21 18:36:10
    Temat: Jaki algorytm do komponentu drzewka?
    Od: Borneq <b...@a...hidden.pl> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    Zamierzam napisać od podstaw prosty komponent drzewka, język i
    środowisko nie gra roli.
    Z punktu użytkownika będzie to struktura, gdzie mamy listę (a raczej
    wektor, bo nie będzie to lista linkowana a rozszerzana tablica) węzłów
    pierwszego poziomu. Każdy z nich (jeśli ma dzieci) będzie miał wektor
    swoich węzłów i tak dalej.
    Każdy z tych węzłów może mieć właściwość expanded lub nie, więc węzeł
    który jest expanded lub nie, może mieć dzieci z których jedne są
    expanded lub nie.
    Jak mam jedną listę, która przechodzi przez wszystkie te listy, to
    wyświetlanie tego już jest łatwe.
    A co mi chodzi - mam drzewko:
    a
    b
    d
    e
    c
    f
    g
    wcięcia są ważne
    Fizycznie elementy są w kilku listach:
    root-> a, g
    a->b,c
    b->d,e
    c->f
    Podczas gdy mamy jedną listę do wyświetlenia:
    a b d e c f g ("pozycją wizualną" nazwę a=0,b=1,d=2 etc)

    Są dwa problemy:
    1. znaleźć pozycję wizualną dla węzła
    2. znaleźć węzeł dla zadanej pozycji wizualnej
    Punkt 2 jest łatwy, jeśli istnieje lista węzłów jak a b d e c f g, przez
    chwilę myślałem że to rozwiązanie.
    Dla operacji expand/collapse musimy przemieścić blok i wstawić lub
    usunąć, co jest dopuszczalne.
    Punkt 1 nadal trudny.
    Poza tyym, co gorsze - jeśli dodajemy węzeł, musimy zlokalizować go
    przez punkt 1, a poza tym dodanie jednego wymaga rozsunięcia, więc gdy
    dodamy wiele, mamy Move wiele razy co jest zbyt wolne.

    Drugie rozwiązanie (kiedyś go użyłem dla drzewka, ale było to
    rozwiązanie bardzo skomplikowane, może da się prościej):
    Węzeł (czy lista wezłów - nie ma tu wielkiej różnicy) ma pole
    VisibleCount oznaczające wielkość całej rozwiniętej częściowo podgałęzi.
    Tutaj dodawanie tak nie spowalnia, bo trzeba updatować jedynie
    VisibleCount parenta, parenta->parenta, aż do korzenia.
    Ale punkty 1 i 2 pozostają trudne.

    Czy jest jakiś wydajny algorytm na to?

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: