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


Листинг 4.32. Первый вызов метода Run_Formula()


Download 1.85 Mb.
Pdf ko'rish
bet68/111
Sana19.11.2023
Hajmi1.85 Mb.
#1786905
TuriУчебное пособие
1   ...   64   65   66   67   68   69   70   71   ...   111
Bog'liq
C# Алгоритмы и структуры данных 2018 Тюкачев, Хлебостроев

Листинг 4.32. Первый вызов метода Run_Formula() 
private double F(double x) 

TParser.aVar[0].value = x; 
parser.topOp.Run_Formula(); 
return TParser.aVar[1].value;}
У класса абстрактного класса Operator есть метод Run_Formula() 
(листинг 4.33), который перекрывают потомки. 
Листинг 4.33. Метод Run_Formula() класса Operator 
public abstract class Operator 

public Node top; 
public OperatorType operatorType; 
public abstract void Run_Formula(); 

В классе оператора-выражения перекрытый метод записывает значе-
ние, взятое из вершины дерева разбора правой части, в переменную левой 
части: 
Листинг 4.34. Метод Run_Formula() класса OperatorExpression 
protected class OperatorExpression : Operator 

public override void Run_Formula() 

aVar[numVal].value =
Convert.ToDouble(top.Value); 


15 / 23


131 
Класс оператора if вычисляет значение логического условия и рекур-
сивно вызывает метод
Run_Formula()
для своих ссылок OperThen
и
OperElse
:
Листинг 4.35. Метод Run_Formula() класса
OperatorIf 
protected class OperatorIf : Operator 

public override void Run_Formula() 

if (Convert.ToBoolean(top.Value)) 
OperThen.Run_Formula(); 
else 
if (OperElse != null) 
OperElse.Run_Formula(); 
}} 
В
ЫВОДЫ
 
Деревья – это структуры данных, предназначенные для представления 
иерархически организованных данных. Каждый узел дерева является объек-
том, содержащим поля данных и поля-ссылки для связи с узлами-потомками. 
В бинарных деревьях каждый узел имеет не более двух потомков. Упорядо-
ченные бинарные деревья формируются по алгоритму, обеспечивающему в 
дальнейшем быстрый поиск с эффективностью O(log
2
N),
где N – число 
узлов. 
При необходимости просмотра всех узлов двоичного дерева, например, 
для печати хранящихся в нем значений используются рекурсивные алгорит-
мы обхода с различным порядком посещения узлов (inOder, preOder
postOder
). Для более глубокого знакомства с алгоритмами обработки де-
ревьев можно рекомендовать монографии [12 – 14, 23]. 

Download 1.85 Mb.

Do'stlaringiz bilan baham:
1   ...   64   65   66   67   68   69   70   71   ...   111




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