【发布时间】:2021-03-25 20:00:30
【问题描述】:
几天前,我在学习泛型树,遇到了一个泛型树直径的代码,如下所示:
static int diameter = Integer.MIN_VALUE;
public static int findDia(Node node){
int dch = -1; // dch = deepest child height
int sdch =-1; // sdch = second deepest child height
for(Node child : node.children){ // children of current node are in an arraylist , every node has data + reference of arraylist of its children
int ch = findDia(child); // ch = child height
if(ch>dch){
sdch=dch;
dch=ch;
}else if(ch>sdch){
sdch=ch;
}
}
if(sdch+dch+2>diameter){
diameter = sdch+dch+2;
}
return dch+1;
}
今天在研究二叉树时,遇到了一个类似的问题,即在二叉树中查找直径,但是针对二叉树直径问题给出的解决方案与此方法不同,有没有办法调整此代码它也适用于二叉树吗?我一直在尝试对其进行调整,使其适用于二叉树,但每次我的代码都失败了一些测试用例。我没有把我的二叉树代码放在这里,因为我已经编写了多种方法,但是它们都失败了一些测试用例。
【问题讨论】:
标签: java recursion data-structures tree binary-tree