Используя очередь или стек, подсчитайте число вершин на n-ом уровне непустого дерева - C (СИ)
Формулировка задачи:
Помогите решить
1. Используя очередь или стек, подсчитайте число вершин на n-ом уровне непустого дерева Т (корень считайте вершиной 0-го уровня). В программе используйте подпрограммы.
2. .
3.
4.
5.
Решение задачи: «Используя очередь или стек, подсчитайте число вершин на n-ом уровне непустого дерева»
textual
Листинг программы
typedef struct Tree { /*data*/ struct Tree* left; struct Tree* right; } Tree; unsigned GetNodeCount(const Tree* t, unsigned n) { if (!t) return 0; if (n > 1) return GetNodeCount(t->left, n - 1) + GetNodeCount(t->right, n - 1); return !!t->left + !!t->right; }
Объяснение кода листинга программы
В данном коде определена структура дерева (структура Tree), которая содержит две ссылки на поддеревья (left и right). Функция GetNodeCount принимает два параметра: ссылку на узел дерева и число n. Если в качестве параметра передается узел NULL, то функция возвращает 0. Если число n больше 1, то функция рекурсивно вызывает саму себя для левого и правого поддеревьев, а затем возвращает сумму полученных результатов. Если число n равно 1, то функция возвращает 1, если узел имеет дочерние элементы (т.е. left или right не равно NULL), и 0 в противном случае.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д