4 个版本

0.1.3 2024 年 7 月 2 日
0.1.2 2022 年 9 月 5 日
0.1.1 2022 年 9 月 5 日
0.1.0 2022 年 9 月 4 日

#1167数据结构

MIT 许可证

36KB
907

Check Lints Test Coverage

settrie

快速子集和超集查询。它实现了 Iztok Savnik 提出的数据结构 set-trie

与 Iztok Savnik 的数据结构的一个区别是,此实现不会记住以现有集合的非叶节点结束的集合。

use settrie::SetTrie;
fn main(){
    let mut set_trie = SetTrie::new();
    set_trie.insert_set(&[1, 2, 3]);
    set_trie.insert_set(&[1, 2, 3, 5]);
    set_trie.insert_set(&[1, 2, 4]);
    assert_eq!(
        set_trie.get_supersets(&[1, 2]),
        vec![vec![1, 2, 3, 5], vec![1, 2, 4]]
    );
    assert_eq!(set_trie.exist_subset(&vec![1, 2, 3, 5]), true);
    assert_eq!(set_trie.exist_superset(&vec![1, 2]), true);
    assert_eq!(
        set_trie.get_all_supersets(),
        vec![vec![1, 2, 3, 5], vec![1, 2, 4]]
    );
    assert_eq!(set_trie.get_supersets(&[1, 3, 5]), vec![vec![1, 2, 3, 5]]);
    assert_eq!(
        set_trie.get_subsets(&[1, 2, 3, 5, 7]),
        vec![vec![1, 2, 3, 5]]
    );
}

无运行时依赖