首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何计算递归树中的最高级别?

问如何计算递归树中的最高级别?
EN

Stack Overflow用户
提问于 2012-10-07 21:49:58
回答 2查看 2.3K关注 0票数 2

任务就在这里。我们有一个类,调用节点,实例是“节点”。这个节点有很多子节点,这些子节点也有很多子节点,等等。我怎么能计算出这棵树的最高层呢?等等:

  • 节点-> child1 -> child 1.1 -> child 1.1.1,-> 1.1.2 ->child 1.2.1
  • 节点-> child2
  • 节点-> child3 -> child3 3.1,child3 3.2 -> child3 3.2.1

这棵树中最高的级别是4( level 1.1.2.1的级别,节点的级别是0),请帮助我!我知道,我应该使用递归方法,但我不知道如何解决这个问题,并编写代码.请..。谢谢!该方法应首先:

代码语言:javascript
复制
public int maxLevel(NODE node){...
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-07 21:57:20

此方法返回基本大小写的级别为1(有0个子):

代码语言:javascript
复制
public int maxLevel() {
    int maxChildLevel = 0;
    for (Node child : children) {
        maxChildLevel = Math.max(maxChildLevel, child.maxLevel());
    }
    return maxChildLevel + 1;
}

此示例的目的是将maxLevel声明为Node的实例方法,因此不需要将Node作为参数。

票数 3
EN

Stack Overflow用户

发布于 2012-10-07 22:02:02

你可以试试这样的东西:

代码语言:javascript
复制
public static int maxLevel(Node node) {
    if (node.children.length == 0) return 1;

    int max = maxLevel(node.children[0]);
    for (int i = 1 ; i < node.children.length ; i++) {
        int n = maxLevel(node.children[i]);
        if (n > max) max = n;
    }

    return max + 1;
}

其中node.children是由node的子节点组成的数组。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12773160

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档