我有一个名为Person
的类对象public class Person {
....
private List<Person> people;
....
public List<Person> getPeople() {
return people;
}
public void setPeople(List<Person> people) {
this.people = people;
}
每个人都有里面所有员工的名单,每个人都有下面的人员名单。如何找到最大深度?例如,在该图像中,最大深度为2.第二高度为1.任何帮助都是值得赞赏的。
答案 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的值。