我正在做 interviewstreet.com 的样本测试。它包括三道题目,这些题目是公开可见的。所以我认为没有讨论这些问题的危害。
我的问题是:
问题 2 / 3(树的直径)
一棵树的直径是树中两个叶节点之间的最长路径上节点的数量。下图显示了直径为9的树,形成最长路径的叶子节点被阴影标记(请注意,每个长度为9的树中有多条路径,但不存在比9更长的路径)。
特别地,注意树T的直径是以下数量中最大的一个:
- T的左子树的直径
- T的右子树的直径
- 通过T的根的最长叶间路径
给定树的根节点,返回树的直径
示例测试用例:
输入 #00:考虑以下树:
输出 #00:
5
解释:
树的直径是5
我在 C++ 中的答案是:
int traverse(node* r) {
if (r == NULL) { return 0;}
return max(traverse(r->left),traverse(r->right))+1;
}
int diameterOfTree(node * r) {
return traverse(r->left)+traverse(r->right)+1;
}
这里有14个测试用例,但其中2个用例的答案是错误的。我找不到哪些用例是我缺少的。我不认为这是基本情况,那么我缺少什么?
diameterOfTree(root);
,所以我不认为那是问题所在。 - Sarp Kaya