我有一个方法,如果它与参数中的年份匹配,则打印电影的标题。
private void searchByYear(BTNode root, int year) {
BTNode temp = root;
if(temp == null)
return;
else if(temp.data.titleYear == year){
System.out.println(temp.data.title);
}
else{
searchByYear(temp.left, year);
searchByYear(temp.right, year);
}
}
问题:它会打印一些电影,而不是全部。我相信问题应该在递归调用中。
注意:排序不是基于年份,所以我必须从整个树中搜索。我也希望打印方法,而不是返回节点。
答案 0 :(得分:2)
将else if
块与else
块合并,以便在执行检查后进行递归调用。
private void searchByYear(BTNode root, int year) {
BTNode temp = root;
if(temp == null)
return;
if(temp.data.titleYear == year){
System.out.println(temp.data.title);
}
searchByYear(temp.left, year);
searchByYear(temp.right, year);
}