查找最大嵌套列表计数

时间:2017-12-09 21:50:38

标签: java oop collections java-8

我有一个名为Person

的类对象
public class Person {
    ....
    private List<Person> people;
    ....
    public List<Person> getPeople() {
          return people;
    }

    public void setPeople(List<Person> people) {
          this.people = people;
    }

nested max count

每个人都有里面所有员工的名单,每个人都有下面的人员名单。如何找到最大深度?例如,在该图像中,最大深度为2.第二高度为1.任何帮助都是值得赞赏的。

4 个答案:

答案 0 :(得分:7)

简单地:

public static int maxDepth(Person p) {
    int maxChildrenDepth = 0;
    for (Person c: p.getPeople()) {
        maxChildrenDepth = Math.max(maxChildrenDepth, maxDepth(c));
    }
    return 1 + maxChildrenDepth;
}

答案 1 :(得分:1)

实际上原始答案是1+,因为每次我必须减去1。这是正确的答案

public int maxDepth() {
        int maxChildrenDepth = 0;

        if(people.size()==0)
            return 0;

        for (Person prs: people) {
            maxChildrenDepth = Math.max(maxChildrenDepth, prs.maxDepth());
        }

        return 1 + maxChildrenDepth;
    }

答案 2 :(得分:0)

尝试使用深度优先搜索。它首先专门找到最深的节点。

>>> print('\n'.join("'%s', '%s'" % (a, b.strip()) for a, b in names))
'a', '1'
'b', '2'
'c', '3'
'd', '4'

有关详细信息,请查看this

答案 3 :(得分:0)

我认为其中一种方式(这种方式可能不是最有效也不是最好的方式)可以创建一个while循环,方法的递归调用检查getPeople(}是否返回{{1} }。如果没有,那么你可以增加计数器并再次递归调用该检查方法。当null返回getPeople()时,此方法应该会中断,并且应该返回分配给counter的值。