【发布时间】:2014-11-07 09:14:28
【问题描述】:
我将如何编写一个返回多态树中叶子数量的递归方法?这意味着我不能使用节点或 null,但我有两个类,Nonemptytree 和 Emptytree,它们都有左右子树的 left 和 right 字段。
【问题讨论】:
标签: java recursion tree polymorphism
我将如何编写一个返回多态树中叶子数量的递归方法?这意味着我不能使用节点或 null,但我有两个类,Nonemptytree 和 Emptytree,它们都有左右子树的 left 和 right 字段。
【问题讨论】:
标签: java recursion tree polymorphism
我假设“叶子”是指树中的最后一个(最深的)元素,它的左右节点都为null。在这种情况下,Nonemptytree 和 Emptytree 类是如何交互的有点不清楚,所以您可能需要澄清一下。
根据您提供的信息,您必须遍历树中的所有元素才能对它们进行计数。
首先,在某处跟踪计数器:
int leafCount;
您可以通过递归调用执行此计数操作:
public int leafNumber(Node node) {
if (node.left != null) {
leafNumber(node.left);
} else if (node.right != null) {'
leafNumber(node.right);
} else {
leafCount++;
}
}
上述方法将递归地遍历整个树。既然你说这是多态的,我猜Nonemptytree 和Emptytree 共享一个公共超类,在这种情况下,你可以在if 语句中使用instanceof 来识别叶子:
if (node instanceof Emptytree) {
leafCount++; // if an Emptytree class contains null left and right nodes
}
【讨论】: