以下函数应该计算二叉树的最大深度或高度——从根节点到最远叶节点的最长路径上的节点数。
int maxDepth(struct node* node)
{
if (node==NULL)
return 0;
else
{
/* compute the depth of each subtree */
int lDepth = maxDepth(node->left);
int rDepth = maxDepth(node->right);
/* use the larger one */
if (lDepth > rDepth)
return X;
else return Y;
}
}
X 和 Y 的值应该是多少才能使函数正常工作?
(A) X = lDepth, Y = rDepth
(B) X = lDepth + 1, Y = rDepth + 1
(C) X = lDepth – 1, Y = rDepth -1
(D)以上都不是答案:(乙)
说明:如果树不为空,则树的高度为
MAX(左子树的高度,右子树的高度)+ 1
有关更多详细信息,请参阅查找树的最大深度或高度的程序。
这个问题的测验