github.com/qiuhoude/go-web@v0.0.0-20220223060959-ab545e78f20d/algorithm/datastructures/tree/trie/trie_test.go (about)

     1  package trie
     2  
     3  import (
     4  	"bufio"
     5  	"fmt"
     6  	"os"
     7  	"testing"
     8  )
     9  
    10  func getNames() []string {
    11  	file, err := os.Open("names.txt")
    12  	if err != nil {
    13  		panic(err)
    14  	}
    15  	var ret []string
    16  	scanner := bufio.NewScanner(file)
    17  	scanner.Split(bufio.ScanLines)
    18  	for scanner.Scan() {
    19  		t := scanner.Text()
    20  		ret = append(ret, t)
    21  	}
    22  	return ret
    23  }
    24  
    25  func TestTrie(t *testing.T) {
    26  	tr := NewTrie()
    27  	names := getNames()
    28  	for _, name := range names {
    29  		if len(name) > 0 {
    30  			tr.Add(name, name)
    31  		}
    32  	}
    33  	fmt.Println("数量:", tr.Size())
    34  	fmt.Println(tr.SearchPrefix("约翰"))
    35  	tr.Remove("约翰顿")
    36  	fmt.Println(tr.SearchPrefix("约翰"))
    37  	fmt.Println("数量:", tr.Size())
    38  }
    39  
    40  func TestTrie_Remove(t *testing.T) {
    41  	tr := NewTrie()
    42  	tr.Add("小", "小")
    43  	tr.Add("小米啦", "小米啦")
    44  	tr.Add("小洪啦", "小洪啦")
    45  	fmt.Println(tr.SearchPrefix("小"))
    46  	tr.Remove("小")
    47  	fmt.Println(tr.SearchPrefix("小"))
    48  }