字典樹的一些使用

2021-07-05 00:03:19 字數 1804 閱讀 7314

字典樹的一些簡單使用

字典樹又被叫做tire樹,又被叫做字首樹,顧名思義就是可以用來求字串字首的樹形結構,與二叉樹不同,字典樹是多叉樹,字串不是直接存放在節點中,而是每乙個節點存放乙個字元,乙個節點的孩子是具有相同的字串字首的。字典樹的根節點通常是取空的。

字典樹的特點是

1.所有相同的字首只儲存一次

2.查詢乙個字串是否存在只需該字串長度次查詢

如圖                      

其基本性質可以歸納為:

1. 根節點不包含字元,除根節點外每乙個節點都只包含乙個字元。

2. 從根節點到某一節點,路徑上經過的字元連線起來,為該節點對應的字串。

3. 每個節點的所有子節點包含的字元都不相同。

字典樹的儲存結構

struct node

;

建立乙個字典樹的節點方法為

node *createnode()

p->num = 0;

return p;

}

插入乙個字串的操作
void insertstr(char *str, node *root)

else}}

查詢匹配字首

int searchtire(char *str, node *root)

else

}return count;

}

就只實現了字典樹的這三個簡單的功能。

下面有一些字典樹的簡單題

ac**

#includeusing namespace std;

struct node

;node *createnode()

p->num = 0;

return p;

}void insertnode(char *str, node *root)

else

}}int search(char *str, node *root)

else

}return p->num;

}int main()

while (cin >> str)

return 0;

}

ac**

#includeusing namespace std;

#define max 2

typedef struct node

;node *createbode()

p->num = 0;

p->sz = 0;

return p;

}void insertnode(char *str, node *root)

else

}p->sz = 1;

}int search(char *str, node *root)

else

}return 1;

}int main()

break;

}count++;

flag = search(str, root);

if (flag == 1)

break;

}insertnode(str, root);

}if (flag)

else

} return 0;

}

字典樹 一些簡單題

原理很簡單,肯定能看懂,我覺得實現費點勁。我的模板 include include using namespace std define max 26 typedef struct trienode trienode trienode memory 1000000 先分配好記憶體。malloc 較為...

字典的一些基礎用法

字典的一些基礎用法 dic a.請迴圈輸出所有的 key foriindic.keys print i k1k2k3 b.請迴圈輸出所有的 value foriindic.values print i v1v2 11,22,33 c.請迴圈輸出所有的 key 和 value fori,vindic....

python 字典(dictionary)一些方法

1 python 字典 dictionary keys 函式以列表返回乙個字典所有的鍵。keys 語法 dict.keys 2 setdefault 方法 python字典setdefault 函式和get 方法類似,如果鍵不存在於字典中,將會新增鍵並將值設為預設值 dict.setdefault ...