-
Notifications
You must be signed in to change notification settings - Fork 8
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Update README to indicate branch's archive status
- Loading branch information
Showing
1 changed file
with
5 additions
and
74 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,80 +1,11 @@ | ||
[![GoDoc](https://godoc.org/github.com/beevik/prefixtree?status.svg)](https://godoc.org/github.com/beevik/prefixtree) | ||
[![GoDoc](https://godoc.org/github.com/beevik/prefixtree?status.svg)](https://pkg.go.dev/github.com/beevik/prefixtree/v2) | ||
[![Go](https://github.com/beevik/prefixtree/actions/workflows/go.yml/badge.svg)](https://github.com/beevik/prefixtree/actions/workflows/go.yml) | ||
|
||
prefixtree | ||
========== | ||
|
||
The prefixtree package implements a simple prefix trie data structure. | ||
The tree enables rapid searching for strings that uniquely match a given | ||
prefix. The implementation allows the user to associate data with each | ||
string, so it can act as a sort of flexible key-value store where | ||
searches succeed with the shortest unambiguous key prefix. | ||
This branch of `prefixtree` is archived and will receive no further updates. | ||
|
||
### Example: Building a prefix tree | ||
|
||
The following code adds strings and associated data (in this case an integer) | ||
to a prefix tree. | ||
|
||
```go | ||
tree := prefixtree.New() | ||
|
||
tree.Add("apple", 10) | ||
tree.Add("orange", 20) | ||
tree.Add("apple pie", 30) | ||
tree.Add("lemon", 40) | ||
tree.Add("lemon meringue pie", 50) | ||
``` | ||
|
||
### Example: Searching the prefix tree | ||
|
||
The following code searches the prefix tree generated by the | ||
previous example and outputs the results. | ||
|
||
```go | ||
fmt.Printf("%-18s %-8s %s\n", "prefix", "value", "error") | ||
fmt.Printf("%-18s %-8s %s\n", "------", "-----", "-----") | ||
|
||
for _, prefix := range []string{ | ||
"a", | ||
"appl", | ||
"apple", | ||
"apple p", | ||
"apple pie", | ||
"apple pies", | ||
"o", | ||
"oran", | ||
"orange", | ||
"oranges", | ||
"l", | ||
"lemo", | ||
"lemon", | ||
"lemon m", | ||
"lemon meringue", | ||
"pear", | ||
} { | ||
value, err := tree.Find(prefix) | ||
fmt.Printf("%-18s %-8v %v\n", prefix, value, err) | ||
} | ||
``` | ||
|
||
Output: | ||
``` | ||
prefix value error | ||
------ ----- ----- | ||
a <nil> prefixtree: prefix ambiguous | ||
appl <nil> prefixtree: prefix ambiguous | ||
apple 10 <nil> | ||
apple p 30 <nil> | ||
apple pie 30 <nil> | ||
apple pies <nil> prefixtree: prefix not found | ||
o 20 <nil> | ||
orang 20 <nil> | ||
orange 20 <nil> | ||
oranges <nil> prefixtree: prefix not found | ||
l <nil> prefixtree: prefix ambiguous | ||
lemo <nil> prefixtree: prefix ambiguous | ||
lemon 40 <nil> | ||
lemon m 50 <nil> | ||
lemon meringue 50 <nil> | ||
pear <nil> prefixtree: prefix not found | ||
``` | ||
There is now a new [version `v2`](https://github.com/beevik/prefixtree/tree/v2) | ||
of prefixtree, which uses a generic type instead of an empty interface to | ||
represent its values. Please use this branch instead. |