更新:对不起,混淆术语-我不需要二叉树,而是段树或间隔树.
假设每次执行我的程序时,我必须静态地初始化一个搜索树。
Tree t;
t.add(10, 'Apple');
t.add(20, 'Pear');
t.add(50, 'Orange');
...
t.add(300, 'Cucumber');
..
// then I use it.
int key = 15;
String s = t.lookup(key) // Returns 'Apple' ( as the key is between 10 and 20)树中的键和值是“静态的”,硬编码,但必须不时维护。是否有元编程技巧,如何在编译期间将键值组织成二进制搜索树(或跳过列表)?
例如,整个搜索树直接在代码.text中实现,而在.data中不保存任何内容?我还可以“预测”密钥的数量,并提供订单。
发布于 2015-02-19 23:17:15
我会使用switch进行查找。
编译器可以自由地使用跳转表、二进制搜索或任何其他技术来优化查找。对于大多数开关表,编译器通常会发出最快的东西。
switch (key)
{
case 10: return "Apple";
case 20: return "Pear";
...
}https://stackoverflow.com/questions/28617781
复制相似问题