【问题标题】:search in whole binary search tree在整个二叉搜索树中搜索
【发布时间】:2018-05-22 12:22:00
【问题描述】:

我有一个方法可以打印电影的标题,如果它与参数中的年份匹配。

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);
    }
}

问题:它打印一些电影,而不是全部。我相信问题应该在递归调用中。

注意:排序不是基于年份的,所以我必须从整棵树中搜索。我也希望方法打印,而不是返回节点。

【问题讨论】:

    标签: java binary-tree binary-search-tree


    【解决方案1】:

    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);
     }
    

    【讨论】:

    • 而对于按顺序打印,左搜索应该在年份之前发生。
    • 即使我们找到了我们需要的数据,这种情况不会再次发生吗?
    • 我想他想把当年拍的每一部电影都打印出来
    • 感谢您,“以便它在执行检查后进行递归调用。”
    • 哦,对不起。我想我需要休息一下!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 2022-01-24
    • 1970-01-01
    • 2019-03-09
    • 1970-01-01
    • 2021-06-18
    相关资源
    最近更新 更多