考虑以下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的约定。让我们以示例树为例,尝试运行代码。
上面的树将输出3作为树的高度(单节点的高度约定为0),而该树中叶节点的数量为4,内部节点的数量为4,总节点的数量为8,这很明显证明其他选择是错误的。
请参考http://geeksquiz.com/data-structures-binary-trees-question-23/
该解决方案由Parul Sharma提供。
这个问题的测验