 Hello 算法 1.0.0b1 Python版. . . . . . . . . . . . . . . . . . 83 7. 树 84 7.1. 二叉树 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 7.2. 二叉树遍历 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 7.3. 二叉搜索树 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 7.4. AVL 树 * . . . . . . . . . . . . . . . . . . . . . . . . . 复杂度分析:数据结构与算法的评价维度、算法效率的评估方法。时间复杂度、空间复杂度,包括推算 方法、常见类型、示例等。 ‧ 数据结构:常用的基本数据类型,数据在内存中的存储方式、数据结构分类方法。数组、链表、栈、队列、 散列表、树、堆、图等数据结构,内容包括定义、优劣势、常用操作、常见类型、典型应用、实现方法等。 ‧ 算法:查找算法、排序算法、搜索与回溯、动态规划、分治算法,内容包括定义、使用场景、优劣势、时 空效率、实现方法、示例题目等。0 码力 | 178 页 | 14.67 MB | 1 年前3 Hello 算法 1.0.0b1 Python版. . . . . . . . . . . . . . . . . . 83 7. 树 84 7.1. 二叉树 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 7.2. 二叉树遍历 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 7.3. 二叉搜索树 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 7.4. AVL 树 * . . . . . . . . . . . . . . . . . . . . . . . . . 复杂度分析:数据结构与算法的评价维度、算法效率的评估方法。时间复杂度、空间复杂度,包括推算 方法、常见类型、示例等。 ‧ 数据结构:常用的基本数据类型,数据在内存中的存储方式、数据结构分类方法。数组、链表、栈、队列、 散列表、树、堆、图等数据结构,内容包括定义、优劣势、常用操作、常见类型、典型应用、实现方法等。 ‧ 算法:查找算法、排序算法、搜索与回溯、动态规划、分治算法,内容包括定义、使用场景、优劣势、时 空效率、实现方法、示例题目等。0 码力 | 178 页 | 14.67 MB | 1 年前3
 Hello 算法 1.0.0b2 Python版. . . . . . . . . . . . . . . . . . 84 7. 树 85 7.1. 二叉树 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 7.2. 二叉树遍历 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 7.3. 二叉搜索树 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 7.4. AVL 树 * . . . . . . . . . . . . . . . . . . . . . . . . . 复杂度分析:数据结构与算法的评价维度、算法效率的评估方法。时间复杂度、空间复杂度,包括推算 方法、常见类型、示例等。 ‧ 数据结构:常用的基本数据类型,数据在内存中的存储方式、数据结构分类方法。数组、链表、栈、队列、 散列表、树、堆、图等数据结构,内容包括定义、优劣势、常用操作、常见类型、典型应用、实现方法等。 ‧ 算法:查找算法、排序算法、搜索与回溯、动态规划、分治算法,内容包括定义、使用场景、优劣势、时 空效率、实现方法、示例题目等。0 码力 | 186 页 | 15.69 MB | 1 年前3 Hello 算法 1.0.0b2 Python版. . . . . . . . . . . . . . . . . . 84 7. 树 85 7.1. 二叉树 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 7.2. 二叉树遍历 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 7.3. 二叉搜索树 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 7.4. AVL 树 * . . . . . . . . . . . . . . . . . . . . . . . . . 复杂度分析:数据结构与算法的评价维度、算法效率的评估方法。时间复杂度、空间复杂度,包括推算 方法、常见类型、示例等。 ‧ 数据结构:常用的基本数据类型,数据在内存中的存储方式、数据结构分类方法。数组、链表、栈、队列、 散列表、树、堆、图等数据结构,内容包括定义、优劣势、常用操作、常见类型、典型应用、实现方法等。 ‧ 算法:查找算法、排序算法、搜索与回溯、动态规划、分治算法,内容包括定义、使用场景、优劣势、时 空效率、实现方法、示例题目等。0 码力 | 186 页 | 15.69 MB | 1 年前3
 Hello 算法 1.0.0b4 Python版. . . . . . . . . . . . . . . . . . 103 7. 树 106 7.1. 二叉树 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 7.2. 二叉树遍历 . . . . . . . . . . . . . . . . . . . . . 7.3. 二叉树数组表示 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 7.4. 二叉搜索树 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 7.5. AVL 树 * . . 2. 分治搜索策略 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222 12.3. 构建二叉树问题 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224 12.4. 汉诺塔问题 . . . .0 码力 | 329 页 | 27.34 MB | 1 年前3 Hello 算法 1.0.0b4 Python版. . . . . . . . . . . . . . . . . . 103 7. 树 106 7.1. 二叉树 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 7.2. 二叉树遍历 . . . . . . . . . . . . . . . . . . . . . 7.3. 二叉树数组表示 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 7.4. 二叉搜索树 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 7.5. AVL 树 * . . 2. 分治搜索策略 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222 12.3. 构建二叉树问题 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224 12.4. 汉诺塔问题 . . . .0 码力 | 329 页 | 27.34 MB | 1 年前3
 Hello 算法 1.1.0 Python版件平凡或令人惊叹的事物背后,都隐藏着精 妙的算法思想。 同样,数据结构无处不在:大到社会网络,小到地铁线路,许多系统都可以建模为“图”;大到一个国家,小 到一个家庭,社会的主要组织形式呈现出“树”的特征;冬天的衣服就像“栈”,最先穿上的最后才能脱下; 羽毛球筒则如同“队列”,一端放入、另一端取出;字典就像一个“哈希表”,能够快速查找目标词条。 本书旨在通过清晰易懂的动画图解和可运行的代码 . . . . . . . . . . . . . . . . . 127 第 7 章 树 129 7.1 二叉树 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 7.2 二叉树遍历 . . . . . . . . . . . . . . . . . . . . . . 7.3 二叉树数组表示 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 7.4 二叉搜索树 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 7.5 AVL 树 * . .0 码力 | 364 页 | 18.42 MB | 1 年前3 Hello 算法 1.1.0 Python版件平凡或令人惊叹的事物背后,都隐藏着精 妙的算法思想。 同样,数据结构无处不在:大到社会网络,小到地铁线路,许多系统都可以建模为“图”;大到一个国家,小 到一个家庭,社会的主要组织形式呈现出“树”的特征;冬天的衣服就像“栈”,最先穿上的最后才能脱下; 羽毛球筒则如同“队列”,一端放入、另一端取出;字典就像一个“哈希表”,能够快速查找目标词条。 本书旨在通过清晰易懂的动画图解和可运行的代码 . . . . . . . . . . . . . . . . . 127 第 7 章 树 129 7.1 二叉树 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 7.2 二叉树遍历 . . . . . . . . . . . . . . . . . . . . . . 7.3 二叉树数组表示 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 7.4 二叉搜索树 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 7.5 AVL 树 * . .0 码力 | 364 页 | 18.42 MB | 1 年前3
 Hello 算法 1.0.0 Python版. . . . . . . . . . . . . . . . . 127 第 7 章 树 129 7.1 二叉树 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 7.2 二叉树遍历 . . . . . . . . . . . . . . . . . . . . . . 7.3 二叉树数组表示 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 7.4 二叉搜索树 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 7.5 AVL 树 * . . 12.2 分治搜索策略 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250 12.3 构建二叉树问题 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252 12.4 汉诺塔问题 . . . . .0 码力 | 362 页 | 17.54 MB | 1 年前3 Hello 算法 1.0.0 Python版. . . . . . . . . . . . . . . . . 127 第 7 章 树 129 7.1 二叉树 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 7.2 二叉树遍历 . . . . . . . . . . . . . . . . . . . . . . 7.3 二叉树数组表示 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 7.4 二叉搜索树 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 7.5 AVL 树 * . . 12.2 分治搜索策略 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250 12.3 构建二叉树问题 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252 12.4 汉诺塔问题 . . . . .0 码力 | 362 页 | 17.54 MB | 1 年前3
 Hello 算法 1.2.0 简体中文 Python 版件平凡或令人惊叹的事物背后,都隐藏着精 妙的算法思想。 同样,数据结构无处不在:大到社会网络,小到地铁线路,许多系统都可以建模为“图”;大到一个国家,小 到一个家庭,社会的主要组织形式呈现出“树”的特征;冬天的衣服就像“栈”,最先穿上的最后才能脱下; 羽毛球筒则如同“队列”,一端放入、另一端取出;字典就像一个“哈希表”,能够快速查找目标词条。 本书旨在通过清晰易懂的动画图解和可运行的代码 . . . . . . . . . . . . . . . . . 127 第 7 章 树 129 7.1 二叉树 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 7.2 二叉树遍历 . . . . . . . . . . . . . . . . . . . . . . 7.3 二叉树数组表示 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 7.4 二叉搜索树 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 7.5 AVL 树 * . .0 码力 | 364 页 | 18.43 MB | 10 月前3 Hello 算法 1.2.0 简体中文 Python 版件平凡或令人惊叹的事物背后,都隐藏着精 妙的算法思想。 同样,数据结构无处不在:大到社会网络,小到地铁线路,许多系统都可以建模为“图”;大到一个国家,小 到一个家庭,社会的主要组织形式呈现出“树”的特征;冬天的衣服就像“栈”,最先穿上的最后才能脱下; 羽毛球筒则如同“队列”,一端放入、另一端取出;字典就像一个“哈希表”,能够快速查找目标词条。 本书旨在通过清晰易懂的动画图解和可运行的代码 . . . . . . . . . . . . . . . . . 127 第 7 章 树 129 7.1 二叉树 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 7.2 二叉树遍历 . . . . . . . . . . . . . . . . . . . . . . 7.3 二叉树数组表示 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 7.4 二叉搜索树 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 7.5 AVL 树 * . .0 码力 | 364 页 | 18.43 MB | 10 月前3
 Hello 算法 1.0.0b5 Python版. . . . . . . . . . . . . . . . . 120 第 7 章 树 123 7.1 二叉树 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 7.2 二叉树遍历 . . . . . . . . . . . . . . . . . . . . . . 7.3 二叉树数组表示 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 7.4 二叉搜索树 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 7.5 AVL 树 * . . 12.2 分治搜索策略 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250 12.3 构建二叉树问题 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252 12.4 汉诺塔问题 . . . . .0 码力 | 361 页 | 30.64 MB | 1 年前3 Hello 算法 1.0.0b5 Python版. . . . . . . . . . . . . . . . . 120 第 7 章 树 123 7.1 二叉树 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 7.2 二叉树遍历 . . . . . . . . . . . . . . . . . . . . . . 7.3 二叉树数组表示 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 7.4 二叉搜索树 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 7.5 AVL 树 * . . 12.2 分治搜索策略 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250 12.3 构建二叉树问题 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252 12.4 汉诺塔问题 . . . . .0 码力 | 361 页 | 30.64 MB | 1 年前3
 Hello 算法 1.2.0 繁体中文 Python 版140 7.4 二元搜尋樹 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 7.5 AVL 樹 * . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 7.6 小結 . res.append(str(pair.key) + " -> " + pair.val) print(res) 值得注意的是,當鏈結串列很長時,查詢效率 ?(?) 很差。此時可以將鏈結串列轉換為“AVL 樹”或“紅黑 樹”,從而將查詢操作的時間複雜度最佳化至 ?(log ?) 。 6.2.2 開放定址 開放定址(open addressing)不引入額外的資料結構,而是透過“多次探測”來處理雜湊衝突,探測方式主 用於儲存資料流,以保持其有序狀態。 7.5 AVL 樹 * 在“二元搜尋樹”章節中我們提到,在多次插入和刪除操作後,二元搜尋樹可能退化為鏈結串列。在這種情 況下,所有操作的時間複雜度將從 ?(log ?) 劣化為 ?(?) 。 如圖 7‑24 所示,經過兩次刪除節點操作,這棵二元搜尋樹便會退化為鏈結串列。 第 7 章 樹 www.hello‑algo.com 152 圖 7‑24 AVL 樹在刪除節點後發生退化0 码力 | 364 页 | 18.74 MB | 10 月前3 Hello 算法 1.2.0 繁体中文 Python 版140 7.4 二元搜尋樹 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 7.5 AVL 樹 * . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 7.6 小結 . res.append(str(pair.key) + " -> " + pair.val) print(res) 值得注意的是,當鏈結串列很長時,查詢效率 ?(?) 很差。此時可以將鏈結串列轉換為“AVL 樹”或“紅黑 樹”,從而將查詢操作的時間複雜度最佳化至 ?(log ?) 。 6.2.2 開放定址 開放定址(open addressing)不引入額外的資料結構,而是透過“多次探測”來處理雜湊衝突,探測方式主 用於儲存資料流,以保持其有序狀態。 7.5 AVL 樹 * 在“二元搜尋樹”章節中我們提到,在多次插入和刪除操作後,二元搜尋樹可能退化為鏈結串列。在這種情 況下,所有操作的時間複雜度將從 ?(log ?) 劣化為 ?(?) 。 如圖 7‑24 所示,經過兩次刪除節點操作,這棵二元搜尋樹便會退化為鏈結串列。 第 7 章 樹 www.hello‑algo.com 152 圖 7‑24 AVL 樹在刪除節點後發生退化0 码力 | 364 页 | 18.74 MB | 10 月前3
 理解Python中的AST 何翔宇 CFG transform A transform B bytecode emit source code: ⽂文本形式的 Python 源码 parser tree: 保留留具体语法信息的树 AST: 对语法的⾼高度抽象,不不会保留留细节 CFG: 记录着程序流程的有向图 bytecode: 能够被 Python 解释器器使⽤用的源码 Intro CPython’s Compiler - 根据词法分析的结果和语法⽂文件,⽣生成解析树 - 分词器器(Tokenize) - keyword - tokenize Intro CPython’s Compiler - transform and emit Transform: - 使⽤用 Python/ast.c 中的 PyAST_FromNode() 从解析树中读取 - 根据转换规则 Parser/Python CFG - 计算字节码的偏移量量 How to Use AST Library How to Use AST Library 什什么是抽象语法树? 在计算机科学中,抽象语法树(Abstract Syntax Tree,AST),或简称语法树 (Syntax tree),是源代码语法结构的⼀一种抽象表示。它以树状的形式表现编程语⾔言 的语法结构,树上的每个节点都表示源代码中的⼀一种结构。之所以说语法是“抽象”0 码力 | 39 页 | 6.95 MB | 1 年前3 理解Python中的AST 何翔宇 CFG transform A transform B bytecode emit source code: ⽂文本形式的 Python 源码 parser tree: 保留留具体语法信息的树 AST: 对语法的⾼高度抽象,不不会保留留细节 CFG: 记录着程序流程的有向图 bytecode: 能够被 Python 解释器器使⽤用的源码 Intro CPython’s Compiler - 根据词法分析的结果和语法⽂文件,⽣生成解析树 - 分词器器(Tokenize) - keyword - tokenize Intro CPython’s Compiler - transform and emit Transform: - 使⽤用 Python/ast.c 中的 PyAST_FromNode() 从解析树中读取 - 根据转换规则 Parser/Python CFG - 计算字节码的偏移量量 How to Use AST Library How to Use AST Library 什什么是抽象语法树? 在计算机科学中,抽象语法树(Abstract Syntax Tree,AST),或简称语法树 (Syntax tree),是源代码语法结构的⼀一种抽象表示。它以树状的形式表现编程语⾔言 的语法结构,树上的每个节点都表示源代码中的⼀一种结构。之所以说语法是“抽象”0 码力 | 39 页 | 6.95 MB | 1 年前3
 Python 标准库参考指南 3.9.20 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1166 20.8 xml.dom.pulldom --- 支持构建部分 DOM 树 . . . . . . . . . . . . . . . . . . . . . . . . . . . 1167 20.8.1 DOMEventStream 对象 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1778 32 Python 语言服务 1781 32.1 parser --- 访问 Python 解析树 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1781 32.1.1 创建 ST 对象 . . . compile() 的模拟 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1785 32.2 ast --- 抽象语法树 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1785 32.2.1 抽象文法0 码力 | 2146 页 | 10.17 MB | 9 月前3 Python 标准库参考指南 3.9.20 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1166 20.8 xml.dom.pulldom --- 支持构建部分 DOM 树 . . . . . . . . . . . . . . . . . . . . . . . . . . . 1167 20.8.1 DOMEventStream 对象 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1778 32 Python 语言服务 1781 32.1 parser --- 访问 Python 解析树 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1781 32.1.1 创建 ST 对象 . . . compile() 的模拟 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1785 32.2 ast --- 抽象语法树 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1785 32.2.1 抽象文法0 码力 | 2146 页 | 10.17 MB | 9 月前3
共 41 条
- 1
- 2
- 3
- 4
- 5














