【发布时间】:2014-07-13 06:50:20
【问题描述】:
我试图解决 BST 中的一个问题,即“检查所有叶子是否处于同一水平”
在这个问题中,我需要不断增加每个堆栈调用的级别,但还要在所有调用中保持一个值,即最大级别。除此之外,我需要返回一个带有结果的布尔值。
解决起来很简单,我需要继续沿着树做,我这样做了
int maxlevel = 0;
public boolean allAtSameLevel(Node root, int level){
if(root== null){
return false;
}
if(root.left== null && root.right == null){
if(maxlevel == 0){
maxlevel = level;
}
return(level== maxlevel);
}
return allAtSameLevel(root.left, level+1) && allAtSameLevel(root.right, level+1) ;
}
我的问题是,对于需要共享的值,我必须在 java 中维护一个实例变量。有一个更好的方法吗?我的困惑是,因为它会先一直到右叶然后再上升,传递值将无济于事。有什么想法吗?
【问题讨论】:
标签: java recursion tree pass-by-value