如何编写一个返回多态树中叶子数的递归方法?这意味着我不能使用节点或null但我有两个类,Nonemptytree和Emptytree,它们都有左右子树的字段。
答案 0 :(得分:0)
我假设“叶子”是指树中最后一个(最深的)元素,左边和右边的节点都是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
共享一个共同的超类,在这种情况下你可以在instanceof
语句中使用if
来识别叶子:
if (node instanceof Emptytree) {
leafCount++; // if an Emptytree class contains null left and right nodes
}