在整个二叉搜索树中搜索
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);
【讨论】:
而对于按顺序打印,左搜索应该在年份之前发生。 即使我们找到了我们需要的数据,这种情况不会再次发生吗? 我想他想把当年拍的每一部电影都打印出来 感谢您,“以便它在执行检查后进行递归调用。” 哦,对不起。我想我需要休息一下!以上是关于在整个二叉搜索树中搜索的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode Java刷题笔记—701. 二叉搜索树中的插入操作