Написать рекурсивную функцию подсчета количества вхождений в дерево заданного числа на заданном уровне - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Задано бинарное дерево,в вершинах которого расположены целые числа.Написать рекурсивную функцию подсчета количества вхождений в дерево заданного числа на заданном уровне.
#include <stdio.h>
int count (struct node tree, int a, int level)
{
    if (tree==NULL)
    return 0;
    if (tree->val==a)
    return 1;
    count (tree->left, level-1)+count (tree->right, level-1);
}
int main(void) {
    // your code goes here
    return 0;
}
Можно так написать?

Решение задачи: «Написать рекурсивную функцию подсчета количества вхождений в дерево заданного числа на заданном уровне»

textual
Листинг программы
int counter(struct node tree, int number, int level)
{
    if (level == 0) return (tree->val == number ? 1 : 0);
    return (tree->left ? counter(tree->left, number, level-1 : 0)) + (tree->right ? counter(tree->right, number, level-1 : 0));
}

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

  1. Функция counter принимает три аргумента: tree (структура, представляющая узел дерева), number (число, которое нужно подсчитать в дереве) и level (уровень, на котором нужно подсчитать число).
  2. Если level равно 0, то функция возвращает 1, если значение в узле равно number, иначе возвращает 0.
  3. В противном случае, функция рекурсивно вызывает саму себя с аргументами tree->left и number (левое поддерево и число), а также tree->right и number (правое поддерево и число). Аргумент level уменьшается на 1 для каждого поддерева.
  4. Результаты подсчета из обоих поддеревьев складываются и возвращаются как итоговый результат.

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


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

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

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