📜  门| GATE-CS-2004 |第 43 题

📅  最后修改于: 2021-09-24 05:54:01             🧑  作者: Mango

考虑以下 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() 返回最大值(左孩子的高度 + 1,右孩子的高度 + 1)。因此,将指向树根的指针传递给 DoSomething(),它将返回树的高度。请注意,此实现遵循单个节点的高度为 0 的约定。让我们取一个示例树并尝试运行代码。
parul_11

上面的树返回 3 作为输出,它是树的高度(单节点高度的约定为 0),而这棵树中的叶节点数为 4,内部节点数为 4,总节点数为 8,显然证明其他选项是错误的。

请参考 http://geeksquiz.com/data-structures-binary-trees-question-23/

该解决方案由Parul Sharma 提供。
这个问题的测验