-
Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.
atman.pl!.POSTED!not-for-mail
From: Borneq <b...@a...hidden.pl>
Newsgroups: pl.comp.programming
Subject: Jaki algorytm do komponentu drzewka?
Date: Sat, 21 Mar 2015 18:36:10 +0100
Organization: ATMAN - ATM S.A.
Lines: 49
Message-ID: <meka6a$prv$1@node1.news.atman.pl>
NNTP-Posting-Host: 91.239.205.105
Mime-Version: 1.0
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 8bit
X-Trace: node1.news.atman.pl 1426959370 26495 91.239.205.105 (21 Mar 2015 17:36:10
GMT)
X-Complaints-To: u...@a...pl
NNTP-Posting-Date: Sat, 21 Mar 2015 17:36:10 +0000 (UTC)
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:31.0) Gecko/20100101
Thunderbird/31.5.0
Xref: news-archive.icm.edu.pl pl.comp.programming:207648
[ ukryj 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?
Następne wpisy z tego wątku
- 22.03.15 07:55 Borneq
- 22.03.15 09:29 Dariusz Jakubowski
- 22.03.15 09:39 Borneq
- 22.03.15 10:05 Dariusz Jakubowski
- 22.03.15 10:22 Borneq
- 22.03.15 10:26 Dariusz Jakubowski
- 22.03.15 10:47 Borneq
- 22.03.15 19:33 Dariusz Jakubowski
Najnowsze wątki z tej grupy
- Xiaomi [Chiny - przyp. JMJ] produkuje w całkowitych ciemnościach i bez ludzi
- Prezydent SZAP/USONA Trump ułaskawił prezydenta Hondurasu Hernandeza skazanego na 45 lat więzienia
- Rosjanie chwalą się prototypem komputera kwantowego. "Najważniejszy projekt naukowy Rosji"
- A Szwajcarzy kombinują tak: FinalSpark grows human neurons from stem cells and connects them to electrode arrays
- Re: Najgorszy język programowania
- NOWY: 2025-09-29 Alg., Strukt. Danych i Tech. Prog. - komentarz.pdf
- Na grupie comp.os.linux.advocacy CrudeSausage twierdzi, że Micro$lop używa SI do szyfrowania formatu dok. XML
- Błąd w Sofcie Powodem Wymiany 3 Duńskich Fregat Typu Iver Huitfeldt
- Grok zaczął nadużywać wulgaryzmów i wprost obrażać niektóre znane osoby
- Can you activate BMW 48V 10Ah Li-Ion battery, connecting to CAN-USB laptop interface ?
- We Wrocławiu ruszyła Odra 5, pierwszy w Polsce komputer kwantowy z nadprzewodzącymi kubitami
- Ada-Europe - AEiC 2025 early registration deadline imminent
- John Carmack twierdzi, że gdyby gry były optymalizowane, to wystarczyły by stare kompy
- Ada-Europe Int.Conf. Reliable Software Technologies, AEiC 2025
- Linuks od wer. 6.15 przestanie wspierać procesory 486 i będzie wymagać min. Pentium
Najnowsze wątki
- 2026-01-29 KSeF - 13 wątpliwości
- 2026-01-29 A ja się pochwalę
- 2026-01-29 Warszawa => Mid/Senior IT Recruiter <=
- 2026-01-29 Warszawa => Senior Java Developer <=
- 2026-01-29 Warszawa => IT Recruiter <=
- 2026-01-28 Degradacja
- 2026-01-28 Wysoki Sąd poinstruował czego unikać wyzywając Owsiaka "Równiejszego"
- 2026-01-28 Białystok => Solution Architect (Workday) - Legal Systems <=
- 2026-01-28 Białystok => Preseles Inżynier (background baz danych) <=
- 2026-01-28 Wrocław => Konsultant wdrożeniowy ERP <=
- 2026-01-28 Łódź => Microsoft Engineer <=
- 2026-01-28 Białystok => Tester manualny <=
- 2026-01-27 Tradycja ciągania posłów po sądach za wystąpienia w Sejmie będzie kontynuowana [Lepper 2]
- 2026-01-27 Pierwszy raz sprzedano więcej samochodów zeeletryfikowanych niż ice
- 2026-01-27 Elektryczny Kałasznikow




Ceny mieszkań stabilne a zdolność kredytowa rośnie. O ile nie masz dzieci