Написать функцию для определения предельной глубины несимметричного двоичного дерева - 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 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 maxh, int h) { if(!cn) return maxh; h++; if(maxh<h) maxh = h; process_appletree(cn->left, maxh, h); process_appletree(cn->right, maxh, h); //Здесь пишем текст функции обработки двоичного дерева }
Объяснение кода листинга программы
- Функция
process_appletree
принимает три параметра:cn
(указатель на узел двоичного дерева),maxh
(максимальная глубина дерева) иh
(текущая глубина дерева). - Если
cn
равен NULL, функция возвращаетmaxh
. h
увеличивается на 1.- Если
maxh
меньшеh
, тоmaxh
присваивается значениеh
. - Рекурсивный вызов функции
process_appletree
для левого поддереваcn->left
и передачей значенийmaxh
иh
. - Рекурсивный вызов функции
process_appletree
для правого поддереваcn->right
и передачей значенийmaxh
иh
. - В этой точке может быть добавлен код обработки двоичного дерева.
- В этом месте возвращается максимальная глубина дерева.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д