我的树结构如下所示:
Tree {
Node root;
}
Node {
List children;
}
我正在尝试创建一个返回最长路径长度的方法。我已经看到一些解决方案在它是二叉树时有效,但每个节点可以拥有多少个子节点并没有限制,这就是我遇到问题的地方。
答案 0 :(得分:6)
我应该做这样的事情
int getLongestPathLength(Node node) {
if(node == null) return 0;
int max = 0;
for(Node child : node.children){
max = Math.max(getLongestPathLength(child),max);
}
return 1+max;
}
答案 1 :(得分:0)
看起来你正在寻找的东西称为根的高度。你可以在这里看到计算它的基本算法(类似于上一个答案中给出的算法):http://cs.nyu.edu/courses/fall02/V22.0310-002/lectures/lecture-08.html。