【发布时间】:2009-02-13 20:50:39
【问题描述】:
首先,我发誓这不是作业,这是我在一次采访中被问到的问题。我想我把它弄得一团糟(尽管我确实意识到解决方案需要递归)。问题来了:
实现 count() 方法,该方法返回树中的节点数。如果一个节点既没有左孩子也没有右孩子,相关的getXXChild()方法将返回null
class Tree {
Tree getRightChild() {
// Assume this is already implemented
}
Tree getLeftChild() {
// Assume this is already implemented
}
int count() {
// Implement me
}
}
我问这个问题的原因只是想看看正确的解决方案,从而衡量我的问题有多糟糕。
干杯, 托尼
【问题讨论】:
-
// 不……你没说拜托
-
@Tony 你能发布你想出的任何解决方案吗?如果我们指出您的设计存在的问题,而不是仅仅把正确的答案扔在那里,这可能对您更有价值。
-
如果这是一个面试问题,面试官可能不仅希望看到“代码”(发布了许多很好的解决方案),而且还希望讨论递归与迭代(参见例如 David Hanak 的答案)和堆栈与堆相比。
-
int numberOfRightKids = getRightChild() != null ? getRightChild().count() : 0; int numberOfLeftKids = getLeftChild() != null ? getLeftChild().count() : 0 int me = 1;返回 numberOfLeftKids + numberOfRightKids + 我;
-
Java 没有 Functor 接口?哈哈。