考虑以下 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 返回的值是 (GATE CS 2004)
(A)树的叶子节点数
(B)树中的节点数
(C)树中内部节点的数量
(D)树的高度答案: (D)
说明:说明:DoSomething() 返回max(左孩子的高度+1,右孩子的高度+1)。因此,将指向树根的指针传递给 DoSomething(),它将返回树的高度。请注意,此实现遵循单个节点的高度为 0 的约定。
这个问题的测验