Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.01.17;
Скачать: [xml.tar.bz2];

Вниз

Иерархическая структура   Найти похожие ветки 

 
vuk   (2001-12-29 14:50) [16]

to sky3d:
Все зависит от того, важен ли порядок следования узлов в линейном массиве. Если нет, то все достаточно просто.
Если да, то операция добавления узла несколько усложняется. Опять же, если дерево загружается один раз и не модифицируется то все просто. А теперь представьте что последовательность важна, дерево уже загружено, и после этого идут операции вставки...

Да и в любом случае, линейная структура хороша только для произвольного доступа к ее элементам. Но часто ли оно необходимо? Скорее всего, чаще приходится использовать последовательный перебор. А для этого достаточно и ссылочной структуры типа дерева или списка (только не того, что TList зовется, а настоящего, одно- или двухсвязного). К тому же скорость обычной вставки в ссылочных структурах, в отличие от линейных, не зависит от количества элементов.

К стати о птичках... Тут писали что в TTreeView элементы хранятся линейно. Дык вот:


function TTreeNode.GetItem(Index: Integer): TTreeNode;
begin
Result := GetFirstChild;
while (Result <> nil) and (Index > 0) do
begin
Result := GetNextChild(Result);
Dec(Index);
end;
if Result = nil then TreeViewError(SListIndexError);
end;

function TTreeNode.GetNextChild(Value: TTreeNode): TTreeNode;
begin
if Value <> nil then Result := Value.GetNextSibling
else Result := nil;
end;

function TTreeNode.GetNextSibling: TTreeNode;
begin
with FOwner do
Result := GetNode(TreeView_GetNextSibling(Handle, ItemId));
end;


Так что все равно получается хождение по дереву для эмуляции прямого доступа. Эффективность такого подхода при переборе с использованием индексного доступа представляете? :o(



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.01.17;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.004 c
1-52585
Марина
2001-12-29 09:05
2002.01.17
Минимизация формы


3-52503
Вит
2001-12-15 16:35
2002.01.17
Как разбить БД в InterBase на два файла?


3-52485
vano
2001-12-11 11:46
2002.01.17
CreateProcess


4-52692
Ig
2001-11-17 19:35
2002.01.17
Поиск файлов


6-52630
z0ne
2001-10-19 02:18
2002.01.17
server sharedirname --->>> d: dir subdirwhatshared





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский