在 Java 中从树中提取前 10 个值

  • 本文关键字:提取 个值 Java java tree
  • 更新时间 :
  • 英文 :


我正在开发一个涉及树结构的Java程序,并且已经为一种特定方法而苦苦挣扎了一段时间。该方法应该搜索整个树并找到计数最高的 10 个名称。我一直在使用 if 语句来尝试这一点,该语句本质上是说"如果它低于最后一个最大值但高于任何其他值,请打印它"。问题是我的方法只是打印最受欢迎的名称 10 次,而不是打印 10 个最受欢迎的名称。任何帮助将不胜感激。谢谢!

public static void mostPopularNameTree(){
popular(root,new Name("-1",'G',-1,-1),0);
}
private static void popular(Node local, Name prev, int i){
Name current = local.data;  
int max = 0;
while(i<10){
if(current.getCount()<prev.getCount() && current.getCount()>max){
max = current.getCount();
prev = current;
if(local.left != null){
popular(local.left, prev, i);
}
if(local.right != null){
popular(local.right, prev, i);
}
}
i++;
System.out.println(current);
}

看起来你有一个树结构。收集信息(如您所要求的信息)的最简单方法是遍历整个树(使用递归,而不是while循环),同时传递收集信息的对象。例如,由于您想查看哪些名称最受欢迎,因此我会使用一个HashMap,其中键是名称,值是名称的计数。然后随心所欲地(预购、后购等)使用映射遍历树,增加每个节点的名称计数。

最新更新