Рубрики

ВОРОТА | GATE-CS-2004 | Вопрос 43

Рассмотрим следующий сегмент программы на C

struct CellNode

{

  struct CelINode *leftchild;

  int element;

  struct CelINode *rightChild;

}

  

int Dosomething(struct CelINode *ptr)

{

    int value = 0;

    if (ptr != NULL)

    {

      if (ptr->leftChild != NULL)

        value = 1 + DoSomething(ptr->leftChild);

      if (ptr->rightChild != NULL)

        value = max(value, 1 + DoSomething(ptr->rightChild));

    }

    return (value);

}

Значение, возвращаемое функцией DoSomething, когда указатель на корень непустого дерева передается в качестве аргумента,
(A) Количество листовых узлов в дереве
(B) Количество узлов в дереве
(C) Количество внутренних узлов в дереве
(D) высота дерева

Ответ: (D)
Объяснение:

DoSomething () возвращает max (высота левого ребенка + 1, высота правого ребенка + 1). Таким образом, учитывая, что указатель на корень дерева передается в DoSomething (), он будет возвращать высоту дерева. Обратите внимание, что эта реализация следует соглашению, где высота одного узла равна 0. Давайте возьмем пример дерева и попытаемся запустить код.

Рекомендуемые посты:

ВОРОТА | GATE-CS-2004 | Вопрос 43

0.00 (0%) 0 votes