【问题标题】:polymorphic tree number of leaves-java多态树的叶子数-java
【发布时间】:2014-11-07 09:14:28
【问题描述】:

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

【问题讨论】:

    标签: java recursion tree polymorphism


    【解决方案1】:

    我假设“叶子”是指树中的最后一个(最深的)元素,它的左右节点都为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 共享一个公共超类,在这种情况下,你可以在if 语句中使用instanceof 来识别叶子:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-29
      • 1970-01-01
      • 2013-01-19
      相关资源
      最近更新 更多