Return RootCopy;
}
Задача 2. Вычисление значения выражения, заданного деревом.
В качестве примера рассмотрим выражение ((2+3)*(7-4))/3. Порядок вычисления выражения можно изобразить в виде дерева на рис. 24.
Рис.24. Выражение в дереве
Узел дерева в поле данных содержит либо число, либо символ операции. Если узел содержит число, то это операнд, а если операцию, то значения левого и правого поддеревьев суть её операнды. Вычисление естественно выполнять в порядке концевого обхода, поскольку для того, чтобы выполнить операцию, надо знать её операнды. Структура узла имеет вид:
const int OPERATION=0; // признак: узел содержит операцию
const int NUMBER=1; // признак: узел содержит число
struct UZEL{
union {
char Operation; // символ операции
float Number; // число
};
int Tag; // может принимать значения OPERATION или NUMBER
UZEL *Left, *Right; // указатели на сыновей
};
Приведенная ниже функция вычисляет значение выражения, заданного деревом.
float TreeValue(UZEL *Root){
Дата добавления: 2014-12-02; просмотров: 888;