所以我遍历BinaryTree,节点包含字符串以及字符串在读取文件时出现多次。我只是在寻找在阅读文件时出现最多的前10个单词,所以基本上我只是比较一个int值。
我的问题是我想找到一种方法来比较和插入一个新节点,如果他们的计数值更大,有效的方法。所以说 我有一棵树...
5
/ \
3 10
/ \
1 15
假设数组大小只有3号。我从1开始,因为数组是空的,直到5,看起来像是在点击5 ...
[1],[3],[5]
当我达到10时,它比一切都要大,但我想保持它排序,所以我需要将3转换为1,5到3和10到5.我想知道是否有更有效的方法这样做然后在每个更高的数字后移动。它读取的文本文件超过10k +,所以我希望它尽可能快。
如果不同的数据结构对此更好,请告诉我。我正在考虑一个队列或链接列表,但我认为数组是浪费太少的空间,因为它只有10的大小。我是学生所以也要温柔:-x。
答案 0 :(得分:1)
一种方法是使用几个数据结构。使用Map和Min-Heap的建议方法如下:
答案 1 :(得分:0)
嗯,你总是可以把它扔进一个未排序的ArrayList并运行一个sort:
List<Node> myArrayList = new ArrayList<Node>();
//Arbitrarily add subtract, replace, etc.
Collections.sort(myArrayList);
这是我的建议!