Найти максимальный элемент в двоичном дереве - C (СИ)
Формулировка задачи:
Помогите решить задачку:найти максимальный элемент в двоичном дереве. Шаблон уже есть ,мне нужно написать функцию поиска максимального элемента.
#include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct tag_tnode tnode; struct tag_tnode{ int a; tnode * left,*right; }; tnode * maketree(int n){ tnode * ce; if (!n ) return NULL; ce = new tnode; ce->a = rand()%11-5; ce->left = maketree(n-1); ce->right = maketree(n-1); return ce; } void showtreelevel(int n, int s, tnode * cn){ int i,d; char str[81]; if(s==n){ memset(str,0,81); d=1; d = (d<<(s-1))+1; for(i=0;i<80/d;i++) str[i]=32; printf("%s%i",str,cn->a); }else{ showtreelevel(n+1,s,cn->left); showtreelevel(n+1,s,cn->right); } } int process_appletree(tnode * cn, int level,int &counter){if(!cn) return 0; else return ge/*... и другие аргументы функции */){ //Здесь пишем текст функции обработки двоичного дерева } int main(){ tnode * fe; int b; fe = maketree(4); for(b=1;b<=4;b++){ showtreelevel(1,b,fe); printf("\n"); } //Здесь выполняется вызов функции обработки двоичного дерева return 0; }
Решение задачи: «Найти максимальный элемент в двоичном дереве»
textual
Листинг программы
int process_appletree(tnode *cn, int level, int *max) { if (cn == NULL) return 0; if (level == 1 || cn->a > *max) *max = cn->a; process_appletree(cn->left, level + 1, max); process_appletree(cn->right, level + 1, max); return 1; }
Объяснение кода листинга программы
В данном коде представлен рекурсивный процесс обхода двоичного дерева с целью поиска максимального элемента. Список действий:
- Если узел, который необходимо обработать, равен NULL, то функция завершается и возвращает 0.
- Если уровень текущего узла равен 1 или значение в узле больше максимального значения, то максимальное значение обновляется.
- Рекурсивный вызов функции process_appletree для левого поддерева с увеличенным уровнем.
- Рекурсивный вызов функции process_appletree для правого поддерева с увеличенным уровнем.
- Возврат 1.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д