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;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.003 сек.