Определите свой resultList вне функции, поскольку я вижу, что вы добавляете результат к этой переменной. Кстати, в порядке обхода следует это правило. Посетите Слева, Посетите Корень и наконец Посетите Право. Однако из кода (хотя я не знаю scala) я могу расшифровать, что вы посещаете левый, правый и, наконец, root.
Эквивалентный рекурсивный javacode для печати по порядку выглядел бы так:
public void printOrdered(Node node){
if(node.left != null){
printOrdered(node.left); //VISIT LEFT
}
System.out.println(node.data); //VISIT ROOT AND PRINT
if(node.right!=null){
printOrdered(node.right); //VISIT RIGHT
}
}
Итак, scala может выглядеть так (синтаксис может быть неправильным)
private def rangerec(r : Node) : Void = {
if(r.left != null) {
rangerec(r.left)
}
resultList = resultList :: List(r.key)
if(r.right != null) {
rangerec(r.right)
}
}
Здесь resultList - это переменная типа List, которую следует передавать извне.