下面是斯卡拉的一个程序。为什么不能递归地工作?
def range(low : Int, high : Int) : List[Int] = {
var result : List[Int] = Nil
result = rangerec(root, result, low, high)
result
}
private def rangerec(r : Node, l : List[Int], low : Int, high :Int) : List[Int] = {
var resultList : List[Int] = List()
if(r.left != null) {
rangerec(r.left, resultList, low, high)
} else if(r.right != null) {
rangerec(r.right, resultList, low, high)
} else {
if(r.key >= low && r.key <= high) {
resultList = resultList ::: List(r.key)
resultList
}
}
resultList
}
我在我的二叉查找树中实现了范围方法,实现了按顺序遍历算法。所以它必须递归地工作,但它不会打印任何东西,List()。如何修复我的算法?或编辑我的代码?