前綴樹:前綴樹如何存儲和查找單詞?實例講解
前綴樹(字典樹)是處理字符串前綴問題的數據結構,核心是利用公共前綴節省空間、提升查找效率。其節點含字符、最多26個子節點(假設小寫字母)及isEnd標記(是否爲單詞結尾)。 插入時從根節點開始,逐個字符處理,無對應子節點則新建,處理完字符後標記結尾節點isEnd爲true。查找時同樣從根開始逐個字符匹配,最後檢查isEnd確認是否存在。 實例中,“app”與“apple”共享前綴“app”,“banana”與“bat”共享“ba”,體現空間優勢。其優勢在於空間更省(共享前綴)、查找快(時間複雜度O(n),n爲單詞長度),且支持前綴查詢。
閱讀全文棧與隊列的應用:括號匹配問題,用棧解決超簡單
### 括號匹配問題:棧的"超簡單"應用 文章介紹了利用棧(後進先出特性)解決括號匹配問題的方法。括號匹配需判斷由`()`、`[]`、`{}`組成的字符串是否合法,即左括號與右括號一一對應且順序正確。 棧的"後進先出"特性適合此類問題:左括號入棧暫存,右括號需匹配最近入棧的左括號。具體步驟爲:初始化棧,遍歷字符串時,左括號直接壓棧;右括號則檢查棧頂元素是否匹配(通過字典映射右括號與對應左括號),匹配則彈出棧頂,否則非法;遍歷結束後棧爲空則合法,否則非法。 關鍵細節包括:區分括號類型(用字典映射)、右括號空棧時直接非法、最終棧爲空是合法的必要條件。通過左壓右查、匹配彈棧的邏輯,可高效判斷任意括號串合法性。
閱讀全文二叉搜索樹:如何用二叉搜索樹實現高效查找?
二叉搜索樹(BST)是一種高效的數據結構,用於解決日常數據查找中“快速定位目標”的問題。它是特殊二叉樹,每個節點滿足:左子樹所有節點值小於當前節點值,右子樹所有節點值大於當前節點值。 其高效性源於“左小右大”規則:查找時從根節點開始,每次比較目標值與當前節點值,若小於則遞歸左子樹,大於則遞歸右子樹,可排除一半節點,效率穩定在O(log n),優於無序數組(O(n))和有序數組二分查找(插入效率低)。 查找過程核心是“比較-縮小範圍”:從根節點出發,等於則找到,小於去左子樹,大於去右子樹,遞歸執行。遞歸或迭代均可實現,如遞歸法從根開始逐層比較,迭代法則用循環縮小範圍。 需注意,若BST不平衡(如退化爲鏈表),效率會退化爲O(n);平衡樹(如紅黑樹、AVL樹)可保持穩定O(log n)。BST通過“導航式”縮小範圍,實現高效有序查找。
閱讀全文