1. Задача: Реализовать структуру данных Trie (префиксное дерево) для автодополнения слов с учетом их веса
package main
import (
"fmt"
"sort"
"sync"
"time"
)
type Word struct {
Val string
Weight int
}
type Node struct {
Next map[rune]*Node
Words []*Word
mu sync.RWMutex
}
func NewNode() *Node {
return &Node{
Next: make(map[rune]*Node),
Words: make([]*Word, 0),
mu: sync.RWMutex{},
}
}
type Trie struct {
root *Node
weights map[string]*Word
}
func NewTrie() *Trie {
return &Trie{
root: NewNode(),
weights: make(map[string]*Word),
}
}
func (t *Trie) Insert(word string, weight int) {
node := t.root
w, ok :=…