在整个二叉搜索树中搜索

Posted

技术标签:

【中文标题】在整个二叉搜索树中搜索【英文标题】: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);
    

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

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

【问题讨论】:

【参考方案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);
 

【讨论】:

而对于按顺序打印,左搜索应该在年份之前发生。 即使我们找到了我们需要的数据,这种情况不会再次发生吗? 我想他想把当年拍的每一部电影都打印出来 感谢您,“以便它在执行检查后进行递归调用。” 哦,对不起。我想我需要休息一下!

以上是关于在整个二叉搜索树中搜索的主要内容,如果未能解决你的问题,请参考以下文章

701. 二叉搜索树中的插入操作

二叉树:搜索树中的插入操作

Leetcode 701. 二叉搜索树中的插入操作

LeetCode Java刷题笔记—701. 二叉搜索树中的插入操作

⭐算法入门⭐《二叉树 - 二叉搜索树》中等03 —— LeetCode 701. 二叉搜索树中的插入操作

二叉树系列验证二叉搜索树&二叉搜索树的最小绝对差&二叉搜索树中的众数&二叉树的最近公共祖先