艾特商业网

tries hard翻译(tries)

更新时间:2024-02-02 12:20:14

导读 你们好,最近小艾特发现有诸多的小伙伴们对于tries hard翻译,tries这个问题都颇为感兴趣的,今天小活为大家梳理了下,一起往下看看吧。1

你们好,最近小艾特发现有诸多的小伙伴们对于tries hard翻译,tries这个问题都颇为感兴趣的,今天小活为大家梳理了下,一起往下看看吧。

1、用字符集{bear,bid , sun,sunday }构建的Tries树如图所示。

2、特点:

3、1、根节点不存储字符,除根节点外每个字符包含字符。

4、2、从根节点到某一节点,路径上经过的字符连接起来,就是该节点对应的字符串

5、3、每个单词的公共前缀作为一个字符节点保存。

6、Tries实现方式。

7、Tries 可以通过二维数组,链表,二叉树等结构实现。

8、Tries节点的结构。

9、JAVA 实现方式

10、class TrieNode {

11、 // R links to node children

12、 private TrieNode[] links;

13、 private final int R = 26;

14、 private boolean isEnd;

15、 public TrieNode() {

16、 links = new TrieNode[R];

17、 }

18、 public boolean containsKey(char ch) {

19、 return links[ch -'a'] != null;

20、 }

21、 public TrieNode get(char ch) {

22、 return links[ch -'a'];

23、 }

24、 public void put(char ch, TrieNode node) {

25、 links[ch -'a'] = node;

26、 }

27、 public void setEnd() {

28、 isEnd = true;

29、 }

30、 public boolean isEnd() {

31、 return isEnd;

32、 }

33、}

34、插入操作Java实现:

35、class Trie {

36、 private TrieNode root;

37、 public Trie() {

38、 root = new TrieNode();

39、 }

40、 // Inserts a word into the trie.

41、 public void insert(String word) {

42、 TrieNode node = root;

43、 for (int i = 0; i < word.length(); i++) {

44、 char currentChar = word.charAt(i);

45、 if (!node.containsKey(currentChar)) {

46、 node.put(currentChar, new TrieNode());

47、 }

48、 node = node.get(currentChar);

49、 }

50、 node.setEnd();

51、 }

52、}

53、时间复杂度

54、最坏情况O(N);N为节点的个数。

55、搜索与插入操作的时间复杂度:O(p)。p为单词的长度。

56、应用:

57、Trie树的应用有很多,比如说拼写矫正,单词自动补充完整,IP路由的最长前缀匹配等。

以上就是tries这篇文章的一些介绍,希望对大家有所帮助。

免责声明:本文由用户上传,如有侵权请联系删除!