Учебное пособие C#. Алгоритмы и структуры данных н. А. Тюкачев, В. Г. Хлебостроев издание третье, стереотипное 1 / 23


Листинг 4.8. Поиск узла по координатам


Download 1.85 Mb.
Pdf ko'rish
bet52/111
Sana19.11.2023
Hajmi1.85 Mb.
#1786905
TuriУчебное пособие
1   ...   48   49   50   51   52   53   54   55   ...   111
Bog'liq
C# Алгоритмы и структуры данных 2018 Тюкачев, Хлебостроев

Листинг 4.8. Поиск узла по координатам 
public Node FindNode(Node p, int x, int y)
// 
поиск по координатам
{
Node result = null; 
if (p == null) 
return result; 
if (((p.x -x) * (p.x - x) +
(p.y - y) * (p.y - y)) < 100) 
result = p; 
else 

result = FindNode(p.left, x, y); 
if (result == null) 
result = FindNode(p.right, x, y); 

return result; 

16 / 23


86 
Метод FindNode() представляет собой рекурсивную процедуру обхода де-
рева с поиском узла, расстояние от которого до координат указателя мыши 
минимально. В завершение работы метод FormMain_MouseDown устанав-
ливает флажок разрешения перемещения узла drawing = true
Обработчик события FormMain_MouseMove, связанный с перемеще-
нием мыши при нажатой левой кнопке, обращается к методу Delta(), изме-
няющему координаты выбранного узла и всех его потомков. Затем заново 
строится изображение дерева. Метод Delta() представлен в листинге 4.9. 
Листинг 4.9. Изменение координат узла и его потомков 
public void Delta(Node p, int dx, int dy)
// 
смещение поддерева 

p.x -= dx; p.y -= dy; 
if (p.left != null) 
Delta(p.left, dx, dy); 
if (p.right != null) 
Delta(p.right, dx, dy); 

4.2.2. П
ОИСК ПО ДЕРЕВУ С ВКЛЮЧЕНИЕМ
 
Эффективность использования структуры упорядоченное дерево мож-
но наглядно продемонстрировать на примере задачи о построении частотного 
словаря. Суть этой задачи заключается в построении на основе заданного 
текста упорядоченной последовательности входящих в него слов с указанием 
для каждого из них кратности вхождения.
С помощью упорядоченного дерева эту задачу можно решить следую-
щим образом. Последовательно перебирая слова текста, строим дерево, каж-
дый узел которого содержит два информационных поля: слово и кратность 
его вхождения. Для каждого очередного слова производится поиск в дереве. 
Если слово найдено, то увеличивается значение поля кратности вхождения у 
соответствующего узла. В противном случае для этого слова создается новый 
узел со значением поля кратности, равным 1. Этот процесс называется поис-
ком по дереву с включением.
Алгоритм поиска по дереву с включениями приведен в листинге 4.10. 
17 / 23


87 

Download 1.85 Mb.

Do'stlaringiz bilan baham:
1   ...   48   49   50   51   52   53   54   55   ...   111




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling