叶子的多态树数 - java

时间:2014-11-06 23:58:20

标签: java recursion tree polymorphism

如何编写一个返回多态树中叶子数的递归方法?这意味着我不能使用节点或null但我有两个类,Nonemptytree和Emptytree,它们都有左右子树的字段。

1 个答案:

答案 0 :(得分:0)

我假设“叶子”是指树中最后一个(最深的)元素,左边和右边的节点都是null。在这种情况下,类NonemptytreeEmptytree如何进行交互有点不清楚,所以你可能需要澄清一点。

根据您提供的信息,您必须遍历树中的所有元素,以便对其进行计数。

首先,在某处跟踪计数器:

int leafCount;

您可以通过递归调用执行此计数操作:

public int leafNumber(Node node) {
    if (node.left != null) {
        leafNumber(node.left);

    } else if (node.right != null) {'
        leafNumber(node.right); 

    } else {
        leafCount++;
    }
}

上述方法将以递归方式遍历整个树。既然你说这是多态的,我猜NonemptytreeEmptytree共享一个共同的超类,在这种情况下你可以在instanceof语句中使用if来识别叶子:

if (node instanceof Emptytree) {
    leafCount++; // if an Emptytree class contains null left and right nodes
}