首页 > 解决方案 > 是什么让这个散列函数具有内射性?

问题描述

对散列技术有更好理解的人可以向我解释一下:是什么使下面的函数成为单射散列函数?

下面的这个函数应该为搜索树生成一个唯一的哈希键:

- 仅包含 1 到 99 之间的值和

- 包含所有可能的 int 不超过一次

是否真的有必要选择 100 作为乘数(我假设 100 不在可能的树值范围内)?

例如,像 31 这样的素数不会可靠地产生预期的输出吗?

int injectiveHashFunc(Tree b){
    int[] po = postorder-tree-walk(b);
    int key = 0;
    for(k = 0; k < po.length; k++) {
        key = key * 100 + po[k];
    }
    return key;
}

标签: javahash

解决方案


推荐阅读