成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

一篇學(xué)好如何實(shí)現(xiàn) Trie

開發(fā) 前端
Trie又稱為字典樹,主要用于單詞的查找得名。如將一個(gè)單詞 Hello存放在字典樹中的數(shù)據(jù)結(jié)構(gòu)。

[[403657]]

本文轉(zhuǎn)載自微信公眾號(hào)「我好困啊」,作者mengxin。轉(zhuǎn)載本文請(qǐng)聯(lián)系我好困啊公眾號(hào)。

Trie又稱為字典樹,主要用于單詞的查找得名。如將一個(gè)單詞 Hello存放在字典樹中的數(shù)據(jù)結(jié)構(gòu)為:

當(dāng)再次加入help時(shí),此時(shí)的字典樹為:

當(dāng)添加hero時(shí),此時(shí)的字典樹為:

可以看到樹以每個(gè)單詞的字符為一個(gè)節(jié)點(diǎn),直到字符添加完畢后設(shè)置上flag,標(biāo)記當(dāng)前節(jié)點(diǎn)結(jié)束為一個(gè)單詞(即從根節(jié)點(diǎn)到當(dāng)前節(jié)點(diǎn)為一個(gè)單詞)。

當(dāng)有新的單詞進(jìn)來時(shí),只需要添加到樹中即可,查找時(shí),從根節(jié)點(diǎn)出發(fā),遍歷整棵樹(其實(shí)總是遍歷樹的某個(gè)分支)。如果其中一個(gè)字符不在樹中,則說明查找失敗,否則所有的word按每個(gè)字符的順序都能查找到,最后判斷結(jié)束節(jié)點(diǎn)是否為一個(gè)單詞,是,則查找成功。

代碼實(shí)現(xiàn)

  1. //葉子節(jié)點(diǎn) 
  2. type Node struct { 
  3.     isWord bool   //是否為一個(gè)單詞 
  4.     next map[uint8]*Node //葉子節(jié)點(diǎn)對(duì)應(yīng)的單個(gè)字符及其next指針 
  5.  
  6. type Trie struct { 
  7.     root *Node 
  8.     size int64 
  9.  
  10. func Constructor() Trie { 
  11.     return Trie{&Node{ 
  12.         isWord: false
  13.         next:  make(map[uint8]*Node), 
  14.     },0} 
  15.  
  16. /** 添加單詞到字典中 */ 
  17. func (this *Trie) Insert(word string)  { 
  18.     if  word ==""
  19.         return 
  20.     } 
  21.     cur := this.root 
  22.  
  23.     for i:= 0;i< len(word);i++ { 
  24.         r := word[i] 
  25.         if  cur.next[r]== nil{ 
  26.             cur.next[r] = &Node{false, make(map[uint8]*Node)} 
  27.         } 
  28.         cur = cur.next[r] 
  29.     } 
  30.     if !cur.isWord { 
  31.         cur.isWord = true 
  32.     } 
  33.  
  34.  
  35.  
  36. /** 查找單詞 */ 
  37. func (this *Trie) Search(word string) bool { 
  38.     if  word ==""
  39.         return false 
  40.     } 
  41.     cur := this.root 
  42.  
  43.     for i:= 0;i< len(word);i++ { 
  44.         r := word[i] 
  45.         if  cur.next[r]== nil{ 
  46.             return false 
  47.         } 
  48.         cur = cur.next[r] 
  49.     } 
  50.     return cur.isWord 
  51.  
  52.  
  53. /**查找對(duì)應(yīng)前綴 */ 
  54. func (this *Trie) StartsWith(prefix string) bool { 
  55.     if  prefix ==""
  56.         return false 
  57.     } 
  58.     cur := this.root 
  59.  
  60.     for i:= 0;i< len(prefix);i++ { 
  61.         r := prefix[i] 
  62.         if  cur.next[r]== nil{ 
  63.             return false 
  64.         } 
  65.         cur = cur.next[r] 
  66.     } 
  67.     return true 

 

 

責(zé)任編輯:武曉燕 來源: 我好困啊
相關(guān)推薦

2022-02-18 00:13:53

JavaScript編程語言數(shù)組

2021-11-04 10:34:02

JavaScript繼承編程

2021-04-08 11:00:56

CountDownLaJava進(jìn)階開發(fā)

2022-04-08 08:32:40

mobx狀態(tài)管理庫(kù)redux

2022-05-17 08:02:55

GoTryLock模式

2024-04-02 12:36:01

2022-03-17 19:29:04

CSS切角自適應(yīng)

2021-12-04 22:05:02

Linux

2021-12-07 08:50:40

字母區(qū)間字符串

2021-05-14 16:34:12

Semaphore原理

2021-09-05 07:55:36

Lsm核心實(shí)現(xiàn)

2022-05-25 08:31:31

ArthasInstrument

2022-10-08 15:07:06

ChatOps運(yùn)維

2021-07-12 06:11:14

SkyWalking 儀表板UI篇

2014-07-30 14:25:41

SwiftiBeacon

2021-08-23 06:25:57

CSS 技巧animation

2024-05-28 09:21:25

2022-10-26 07:39:36

MVCC數(shù)據(jù)庫(kù)RR

2022-01-02 08:43:46

Python

2022-12-19 08:14:30

注解開發(fā)配置
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 91麻豆精品一区二区三区 | www网站在线观看 | 久久精品亚洲欧美日韩精品中文字幕 | 精品视频一区二区三区在线观看 | 99免费视频| 日本公妇乱淫xxxⅹ 国产在线不卡 | 中文字幕亚洲视频 | 国产一级毛片精品完整视频版 | 欧美群妇大交群中文字幕 | 国产精品国产精品国产专区不卡 | 欧美日韩福利 | 国产精品欧美一区二区三区不卡 | 欧美综合一区二区 | 国精产品一区二区三区 | 91视频国产精品 | 精品久久久久久一区二区 | 蜜桃视频在线观看免费视频网站www | 美女啪啪国产 | 国产精品久久久久久福利一牛影视 | 精品国产精品国产偷麻豆 | 99re在线 | 大乳boobs巨大吃奶挤奶 | 精品一区二区在线观看 | 亚洲va欧美va天堂v国产综合 | 亚洲国产黄 | 久久手机视频 | 欧美一区二区三区在线看 | 日韩av啪啪网站大全免费观看 | 成人欧美一区二区三区 | 欧美三区在线观看 | 激情毛片 | 羞羞视频一区二区 | 黄a大片 | 精品一区二区观看 | 国产一区二区成人 | 亚洲人a | 国产精品1区2区 | 国产激情91久久精品导航 | 91观看 | 天天干狠狠 | 日韩精品一区二区三区在线播放 |