Найти максимальный элемент в двоичном дереве - 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;
}

Объяснение кода листинга программы

В данном коде представлен рекурсивный процесс обхода двоичного дерева с целью поиска максимального элемента. Список действий:

  1. Если узел, который необходимо обработать, равен NULL, то функция завершается и возвращает 0.
  2. Если уровень текущего узла равен 1 или значение в узле больше максимального значения, то максимальное значение обновляется.
  3. Рекурсивный вызов функции process_appletree для левого поддерева с увеличенным уровнем.
  4. Рекурсивный вызов функции process_appletree для правого поддерева с увеличенным уровнем.
  5. Возврат 1.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4 из 5
Похожие ответы