我有一个n元树,其中包含每个节点中的键值(整数)。我想计算树的最小深度。以下是我想出了这么远:计算最长路径
int min = 0;
private int getMinDepth(Node node, int counter, int temp){
if(node == null){
//if it is the first branch record min
//otherwise compare min to this value
//and record the minimum value
if(counter == 0){
temp = min;
}else{
temp = Math.min(temp, min);
min = 0;
}
counter++;//counter should increment by 1 when at end of branch
return temp;
}
min++;
getMinDepth(node.q1, counter, min);
getMinDepth(node.q2, counter, min);
getMinDepth(node.q3, counter, min);
getMinDepth(node.q4, counter, min);
return temp;
}
的代码被称为像这样:
int minDepth = getMinDepth(root, 0, 0);
的想法是,如果树是向下遍历第一分支(分支数为跟踪通过柜台),然后我们设置临时持有人来存储这个分支深度。从此,比较下一个分支长度,如果它更小,则使temp =该长度。由于某些原因,计数器根本不增加,始终保持为零。任何人都知道我在做什么错了?
哪儿分钟从上面的代码中来吗?它没有在任何地方宣布。 – 2011-02-07 23:23:09
min是一个设置为零的实例变量。 – dr85 2011-02-07 23:27:41