字典樹的一些簡單使用
字典樹又被叫做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**
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;
}
#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 ...