Найти максимальный элемент в бинарном дереве - C (СИ)
Формулировка задачи:
тип информационного поля int*, найти маскимальный элемент в дереве. (помогите, пожалуйста, нужен конкретный пример, чтобы разобраться)
Решение задачи: «Найти максимальный элемент в бинарном дереве»
textual
Листинг программы
#include <iostream.h> struct Node { int Val; Node *Left; Node *Right; }; void delTree(Node *root) { if ((root->Left == NULL) && (root->Right == NULL)) delete root; else if (root->Left == NULL) { delete root->Left; delete root; } else if (root->Right == NULL) { delete root->Right; delete root; } else { delete root->Right; delete root->Left; delete root; } } int min (int a, int b) { return ((a > b) ? b : a); } int minVal(Node *root) { if ((root->Left == NULL) && (root->Right == NULL)) return root->Val; else if (root->Left == NULL) return min(root->Val,minVal(root->Right)); else if (root->Right == NULL) return min(root->Val,minVal(root->Left)); else return min(root->Val,min(minVal(root->Left),minVal(root->Right))); } int main(int argc, char* argv[]) { Node *Root,*Curr,*Next; Root = new Node; Root->Left =NULL; Root->Right =NULL; Root->Val=123; Curr = new Node; Curr->Left =NULL; Curr->Right =NULL; Curr->Val=56; Root->Left=Curr; Curr = new Node; Curr->Left =NULL; Curr->Right =NULL; Curr->Val=66; Root->Right=Curr; Next = new Node; Next->Left =NULL; Next->Right =NULL; Next->Val=16; Curr->Right=Next; cout << minVal(Root) << endl; delTree(Root); return 0; }
Объяснение кода листинга программы
- Структура бинарного дерева реализована в виде динамического массива, элементы которого являются указателями на узлы.
- Рекурсивная функция для удаления дерева. Если узел пуст, то его следует удалить. Если узел не пуст, то нужно рекурсивно вызвать функцию для обоих поддеревьев и затем удалить узел.
- Рекурсивная функция для поиска минимального значения в дереве. Если узел пуст, то возвращается его значение. Если узел не пуст, то рекурсивно вызывается функция для обоих поддеревьев и затем возвращается минимальное значение.
- Создается дерево из 4 узлов.
- Рекурсивно вызывается функция для поиска минимального значения в дереве и выводится результат.
- Рекурсивная функция для удаления дерева вызывается для корня дерева.
- Все узлы освобождаются с помощью оператора delete.
- Возвращается 0, что означает успешное завершение программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д