 MoonBit月兔编程语言 现代编程思想 第五课 数据类型:树、二叉树、二叉搜索树、AVL树现代编程思想 树 Hongbo Zhang 1 数据结构:树 树 ⼆叉树 ⼆叉搜索树 ⼆叉平衡树 2 ⽣活中的树状图 ⽣活中有很多的数据的结构与⼀颗树相似 谱系图(⼜称,家族树) ⽂件结构 数学表达式 …… 3 树的逻辑结构 数据结构中,树是由有限个节点构成的具有层次关系的集合 节点是存储数据的结构,节点之间存在亲⼦关系:⽗节点和⼦节点 如果树不为空,则它拥有⼀个根节点:根节点没有⽗节点 任何节点不能是⾃⼰的后代节点:树中不能有环路 树的⼀条边指的是⼀对节点(u, v),其中u是v的⽗节点或者v是u的⽗节点 4 树的逻辑结构 这不是⼀颗树 5 树的逻辑结构 计算机中的树根节点在上,⼦节点在⽗节点下⽅ 相关术语 节点的深度:根节点下到这个节点的路径的⻓度(边的数量) 根节点深度为0 节点的⾼度:节点下到叶节点的最⻓路径的⻓度 叶节点⾼度为0 树的⾼度:根节点的⾼度 只有⼀个节点的树⾼度为0 空树(没有节点的树)⾼度为-1 也有的定义将树的⾼度等同于最⼤层次,以根为第⼀层 6 树的存储结构 树的存储⽅式有多种(以⼆叉树为例,省略节点存储的数据) 节点与⼦节点关系的列表: [ (0, 1), (0, 2), (1, 3) ] 代数数据结构定义 1. Node(0, 2. Node(1, 3. Leaf(3), 4. Empty)0 码力 | 29 页 | 1015.26 KB | 1 年前3 MoonBit月兔编程语言 现代编程思想 第五课 数据类型:树、二叉树、二叉搜索树、AVL树现代编程思想 树 Hongbo Zhang 1 数据结构:树 树 ⼆叉树 ⼆叉搜索树 ⼆叉平衡树 2 ⽣活中的树状图 ⽣活中有很多的数据的结构与⼀颗树相似 谱系图(⼜称,家族树) ⽂件结构 数学表达式 …… 3 树的逻辑结构 数据结构中,树是由有限个节点构成的具有层次关系的集合 节点是存储数据的结构,节点之间存在亲⼦关系:⽗节点和⼦节点 如果树不为空,则它拥有⼀个根节点:根节点没有⽗节点 任何节点不能是⾃⼰的后代节点:树中不能有环路 树的⼀条边指的是⼀对节点(u, v),其中u是v的⽗节点或者v是u的⽗节点 4 树的逻辑结构 这不是⼀颗树 5 树的逻辑结构 计算机中的树根节点在上,⼦节点在⽗节点下⽅ 相关术语 节点的深度:根节点下到这个节点的路径的⻓度(边的数量) 根节点深度为0 节点的⾼度:节点下到叶节点的最⻓路径的⻓度 叶节点⾼度为0 树的⾼度:根节点的⾼度 只有⼀个节点的树⾼度为0 空树(没有节点的树)⾼度为-1 也有的定义将树的⾼度等同于最⼤层次,以根为第⼀层 6 树的存储结构 树的存储⽅式有多种(以⼆叉树为例,省略节点存储的数据) 节点与⼦节点关系的列表: [ (0, 1), (0, 2), (1, 3) ] 代数数据结构定义 1. Node(0, 2. Node(1, 3. Leaf(3), 4. Empty)0 码力 | 29 页 | 1015.26 KB | 1 年前3
 Nim 2.0.2 中文手册详情查看编译期执⾏限制。 其术语 runtime "运⾏ 时"涵盖了编译期执⾏和可执⾏⽂件的代码执⾏。 编译器将 Nim 源码解析成称为 abstract syntax tree (AST) "抽象语法树"的内部数据结构,在执⾏代码或将其编译为可执⾏⽂件之 前,通过 semantic analysis "语义分析"对AST进⾏转换,增加了语义信息,如表达式类型、标识符的含义,以及在某些情况下表达 式的值。在语义分析中检测到的错误被称为 释段组成,在它和前⾯的注释段之间没有其他标记,就不会开启⼀个 新的注释。 Documentation comments "⽂档注释"以两个 ## 开头,⽂档注释是 Token 标记,它们属于语法树,只允许在源⽂件的特定语法位 置出现。 多⾏注释 从语⾔的 0.13.0 版本开始, Nim ⽀持多⾏注释。如下: 多⾏注释⽀持嵌套: 还有多⾏⽂档注释,同样⽀持嵌套: i = 0 # 这是⼀个多⾏注释。 openarray "开放数组" 类型只能⽤于参数。开放数组总是 从位置 0 开始⽤ int 索引。 也可⽤ len , low 和 high 操作。具有兼容基类型的任何数组都可以传递给开放数组的形参,不关乎 索引类型。除了数组之外,还可以将序列传递给开放数组参数。 openarray 类型不能嵌套: 不⽀持多维开放数组,因为这种需求很少且不⾼效。 可变参数 varargs 参数是⼀0 码力 | 127 页 | 7.05 MB | 1 年前3 Nim 2.0.2 中文手册详情查看编译期执⾏限制。 其术语 runtime "运⾏ 时"涵盖了编译期执⾏和可执⾏⽂件的代码执⾏。 编译器将 Nim 源码解析成称为 abstract syntax tree (AST) "抽象语法树"的内部数据结构,在执⾏代码或将其编译为可执⾏⽂件之 前,通过 semantic analysis "语义分析"对AST进⾏转换,增加了语义信息,如表达式类型、标识符的含义,以及在某些情况下表达 式的值。在语义分析中检测到的错误被称为 释段组成,在它和前⾯的注释段之间没有其他标记,就不会开启⼀个 新的注释。 Documentation comments "⽂档注释"以两个 ## 开头,⽂档注释是 Token 标记,它们属于语法树,只允许在源⽂件的特定语法位 置出现。 多⾏注释 从语⾔的 0.13.0 版本开始, Nim ⽀持多⾏注释。如下: 多⾏注释⽀持嵌套: 还有多⾏⽂档注释,同样⽀持嵌套: i = 0 # 这是⼀个多⾏注释。 openarray "开放数组" 类型只能⽤于参数。开放数组总是 从位置 0 开始⽤ int 索引。 也可⽤ len , low 和 high 操作。具有兼容基类型的任何数组都可以传递给开放数组的形参,不关乎 索引类型。除了数组之外,还可以将序列传递给开放数组参数。 openarray 类型不能嵌套: 不⽀持多维开放数组,因为这种需求很少且不⾼效。 可变参数 varargs 参数是⼀0 码力 | 127 页 | 7.05 MB | 1 年前3
 Python 标准库参考指南 3.9.20 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245 8.7 bisect --- 数组二分查找算法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246 8.7.1 搜索有序列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1166 20.8 xml.dom.pulldom --- 支持构建部分 DOM 树 . . . . . . . . . . . . . . . . . . . . . . . . . . . 1167 20.8.1 DOMEventStream 对象 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1657 29 Python 运行时服务 1659 29.1 sys --- 系统相关的形参和函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1659 29.2 sysconfig ——提供对0 码力 | 2146 页 | 10.17 MB | 9 月前3 Python 标准库参考指南 3.9.20 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245 8.7 bisect --- 数组二分查找算法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246 8.7.1 搜索有序列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1166 20.8 xml.dom.pulldom --- 支持构建部分 DOM 树 . . . . . . . . . . . . . . . . . . . . . . . . . . . 1167 20.8.1 DOMEventStream 对象 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1657 29 Python 运行时服务 1659 29.1 sys --- 系统相关的形参和函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1659 29.2 sysconfig ——提供对0 码力 | 2146 页 | 10.17 MB | 9 月前3
 Python 标准库参考指南 3.9.20 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231 8.7 bisect --- 数组二分查找算法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232 8.7.1 搜索有序列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1092 20.8 xml.dom.pulldom --- 支持构建部分 DOM 树 . . . . . . . . . . . . . . . . . . . . . . . . . 1093 20.8.1 DOMEventStream 对象 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1552 29 Python 运行时服务 1553 29.1 sys --- 系统相关的形参和函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1553 29.2 sysconfig ——提供对 Python0 码力 | 2015 页 | 10.12 MB | 9 月前3 Python 标准库参考指南 3.9.20 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231 8.7 bisect --- 数组二分查找算法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232 8.7.1 搜索有序列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1092 20.8 xml.dom.pulldom --- 支持构建部分 DOM 树 . . . . . . . . . . . . . . . . . . . . . . . . . 1093 20.8.1 DOMEventStream 对象 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1552 29 Python 运行时服务 1553 29.1 sys --- 系统相关的形参和函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1553 29.2 sysconfig ——提供对 Python0 码力 | 2015 页 | 10.12 MB | 9 月前3
 Python 标准库参考指南 3.10.15 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 8.7 bisect --- 数组二分查找算法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256 8.7.1 性能说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1199 20.8 xml.dom.pulldom --- 支持构建部分 DOM 树 . . . . . . . . . . . . . . . . . . . . . . . . . . . 1199 20.8.1 DOMEventStream 对象 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1700 29 Python 运行时服务 1701 29.1 sys --- 系统相关的形参和函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1701 29.2 sysconfig ——提供对0 码力 | 2207 页 | 10.45 MB | 9 月前3 Python 标准库参考指南 3.10.15 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 8.7 bisect --- 数组二分查找算法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256 8.7.1 性能说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1199 20.8 xml.dom.pulldom --- 支持构建部分 DOM 树 . . . . . . . . . . . . . . . . . . . . . . . . . . . 1199 20.8.1 DOMEventStream 对象 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1700 29 Python 运行时服务 1701 29.1 sys --- 系统相关的形参和函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1701 29.2 sysconfig ——提供对0 码力 | 2207 页 | 10.45 MB | 9 月前3
 Python 标准库参考指南 3.10.15 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237 8.7 bisect --- 数组二分查找算法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238 8.7.1 性能说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1118 20.8 xml.dom.pulldom --- 支持构建部分 DOM 树 . . . . . . . . . . . . . . . . . . . . . . . . . 1119 20.8.1 DOMEventStream 对象 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1591 29 Python 运行时服务 1593 29.1 sys --- 系统相关的形参和函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1593 29.2 sysconfig ——提供对 Python0 码力 | 2072 页 | 10.39 MB | 9 月前3 Python 标准库参考指南 3.10.15 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237 8.7 bisect --- 数组二分查找算法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238 8.7.1 性能说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1118 20.8 xml.dom.pulldom --- 支持构建部分 DOM 树 . . . . . . . . . . . . . . . . . . . . . . . . . 1119 20.8.1 DOMEventStream 对象 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1591 29 Python 运行时服务 1593 29.1 sys --- 系统相关的形参和函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1593 29.2 sysconfig ——提供对 Python0 码力 | 2072 页 | 10.39 MB | 9 月前3
 Python 标准库参考指南 3.8.20 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215 8.6 bisect --- 数组二分查找算法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219 8.7 array --- 高效的数字数组 DOM 实现 . . . . . . . . . . . . . . . . . . . . . . . . . . 1073 20.8 xml.dom.pulldom --- 支持构建部分 DOM 树 . . . . . . . . . . . . . . . . . . . . . . . . . 1076 20.9 xml.sax --- 支持 SAX2 解析器 . . . . . . . 打包文件 . . . . . . . . . . . . . . . . . . . . . . . . . 1541 29 Python 运行时服务 1547 29.1 sys --- 系统相关的形参和函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1547 29.2 sysconfig ——提供对 Python0 码力 | 1927 页 | 9.69 MB | 9 月前3 Python 标准库参考指南 3.8.20 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215 8.6 bisect --- 数组二分查找算法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219 8.7 array --- 高效的数字数组 DOM 实现 . . . . . . . . . . . . . . . . . . . . . . . . . . 1073 20.8 xml.dom.pulldom --- 支持构建部分 DOM 树 . . . . . . . . . . . . . . . . . . . . . . . . . 1076 20.9 xml.sax --- 支持 SAX2 解析器 . . . . . . . 打包文件 . . . . . . . . . . . . . . . . . . . . . . . . . 1541 29 Python 运行时服务 1547 29.1 sys --- 系统相关的形参和函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1547 29.2 sysconfig ——提供对 Python0 码力 | 1927 页 | 9.69 MB | 9 月前3
 Python 标准库参考指南 3.8.20 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215 8.6 bisect --- 数组二分查找算法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219 8.7 array --- 高效的数字数组 DOM 实现 . . . . . . . . . . . . . . . . . . . . . . . . . . 1073 20.8 xml.dom.pulldom --- 支持构建部分 DOM 树 . . . . . . . . . . . . . . . . . . . . . . . . . 1076 20.9 xml.sax --- 支持 SAX2 解析器 . . . . . . . 打包文件 . . . . . . . . . . . . . . . . . . . . . . . . . 1541 29 Python 运行时服务 1547 29.1 sys --- 系统相关的形参和函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1547 29.2 sysconfig ——提供对 Python0 码力 | 1927 页 | 9.69 MB | 9 月前3 Python 标准库参考指南 3.8.20 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215 8.6 bisect --- 数组二分查找算法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219 8.7 array --- 高效的数字数组 DOM 实现 . . . . . . . . . . . . . . . . . . . . . . . . . . 1073 20.8 xml.dom.pulldom --- 支持构建部分 DOM 树 . . . . . . . . . . . . . . . . . . . . . . . . . 1076 20.9 xml.sax --- 支持 SAX2 解析器 . . . . . . . 打包文件 . . . . . . . . . . . . . . . . . . . . . . . . . 1541 29 Python 运行时服务 1547 29.1 sys --- 系统相关的形参和函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1547 29.2 sysconfig ——提供对 Python0 码力 | 1927 页 | 9.69 MB | 9 月前3
 Python 标准库参考指南 3.8.20 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230 8.6 bisect --- 数组二分查找算法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234 8.7 array --- 高效的数字数组 实现 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1149 20.8 xml.dom.pulldom --- 支持构建部分 DOM 树 . . . . . . . . . . . . . . . . . . . . . . . . . . . 1153 20.9 xml.sax --- 支持 SAX2 解析器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1648 29 Python 运行时服务 1655 29.1 sys --- 系统相关的形参和函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1655 29.2 sysconfig ——提供对0 码力 | 2052 页 | 9.74 MB | 9 月前3 Python 标准库参考指南 3.8.20 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230 8.6 bisect --- 数组二分查找算法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234 8.7 array --- 高效的数字数组 实现 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1149 20.8 xml.dom.pulldom --- 支持构建部分 DOM 树 . . . . . . . . . . . . . . . . . . . . . . . . . . . 1153 20.9 xml.sax --- 支持 SAX2 解析器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1648 29 Python 运行时服务 1655 29.1 sys --- 系统相关的形参和函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1655 29.2 sysconfig ——提供对0 码力 | 2052 页 | 9.74 MB | 9 月前3
 Python 标准库参考指南 3.13 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262 8.7 bisect --- 数组二分算法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263 8.7.1 性能说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1256 20.8 xml.dom.pulldom --- 对构建部分 DOM 树的支持 . . . . . . . . . . . . . . . . . . . . . . . 1256 20.8.1 DOMEventStream 对象 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1753 29 Python 运行时服务 1755 29.1 sys --- 系统相关的形参和函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1755 29.2 sys.monitoring0 码力 | 2246 页 | 11.74 MB | 9 月前3 Python 标准库参考指南 3.13 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262 8.7 bisect --- 数组二分算法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263 8.7.1 性能说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1256 20.8 xml.dom.pulldom --- 对构建部分 DOM 树的支持 . . . . . . . . . . . . . . . . . . . . . . . 1256 20.8.1 DOMEventStream 对象 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1753 29 Python 运行时服务 1755 29.1 sys --- 系统相关的形参和函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1755 29.2 sys.monitoring0 码力 | 2246 页 | 11.74 MB | 9 月前3
共 467 条
- 1
- 2
- 3
- 4
- 5
- 6
- 47














 
  
 