我做了这个递归方法来计算二叉树中的最长路径。将其存储在 arralist 中的路径,然后返回。但是,我必须将数组列表变量声明为全局的。是否可以使用这种方法,但他的数组列表变量是本地的。
public static <T> ArrayList<T> longestPath(BinaryNode<T> root){
//ArrayList path = new ArrayList();
if(root == null) return null;
if(height(root.left) > height(root.right)){
path.add(root.element);
longestPath(root.left);
}else{
path.add(root.element);
longestPath(root.right);
}
return path;
}
我必须使它成为全局的原因是因为它是一个递归程序,每次它调用自己时,如果你知道我的意思,它会创建一个具有不同地址的新数组列表对象变量。