我有一个方法,如果电影的标题与参数中的年份匹配,则打印电影的标题。
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);
}
}
问题:它打印一些电影,而不是全部。我认为问题应该出在递归调用中。
注意:排序不是按年份排序,所以我必须从整棵树中搜索。另外我希望该方法能够打印,而不是返回节点。
最佳答案
将 else if
block 与 else
block 合并,以便在执行检查后进行递归调用。
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);
}
关于java - 在整个二叉搜索树中搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50467552/