MoonBit月兔编程语言 现代编程思想 第五课 数据类型:树、二叉树、二叉搜索树、AVL树# 现代编程思想 树 Hongbo Zhang ## 数据结构:树 • 树 · 二叉树 • 二叉搜索树 • 二叉平衡树 ## 生活中的树状图 - 生活中有很多的数据的结构与一颗树相似 - 谱系图(又称,家族树) ☐ 文件结构 ☐ 数学表达式  ## 树的逻辑结构 • 数据结构中,树是由有限个节点构成的具有层次关系的集合 ◦ 节点是存储数据的结构,节点之间存在亲子关系:父节点和子节点 如果树不为空,则它拥有一个根节点:根节点没有父节点 所有非根节点都有唯一的父节点 如果没有子节点的节点可称为叶节点 ☐ 任何节点不能是自己的后代节点:树中不能有环路 ☐ 树的一条边指的是一对节点 $ (u, v) 0/b0908fa36dacc9f916e5bf9d9fe29bf7/p4_2.jpg) ## 树的逻辑结构 • 这不是一颗树  ## 树的逻辑结构 - 计算机中的树根节点在上,子节点在父节点下方 • 相关术语 节点的深度:根节点下到这个节点的路径的长度(边的数量)0 码力 | 29 页 | 1015.26 KB | 2 年前3
机器学习课程-温州大学-07机器学习-决策树## 机器学习-决策树 黄海广 副教授 2023年06月 ## 本章目录 01 决策树原理 02 ID3算法 03 C4.5算法 04 CART算法 ### 1. 决策树原理 01 决策树原理 02 ID3算法 03 C4.5算法 04 CART算法 ### 1. 决策树原理  ● 决策树:从训练数据中学习得出一个树状结构的模型。 ● 决策树属于判别模型。 ● 决策树是一种树状结构,通过做出一系列决策(选择)来对数据进行划分,这类似于针对一系列问题进行选择。 ● 决策树的决策过程就是从根节点开始,测试待分类项中对应的特征属性,并按照其值选择输出分支,直到叶子节点,将叶子节点的存放的类别作为决策结果。 ### 1. 决策树原理  - 决策树算法是一种归纳分类算法,它通过对训练集的学习,挖掘出有用的规则,用于对新数据进行预测。 ● 决策树算法属于监督学习方法。 ● 决策树归纳的基本算法是贪心算法,自顶向下来构建决策树。 ● 贪心算法:在每一步选择中都采取在当前状态下最好/优的选择。 ● 在决策树的生成过程中,分割方法即属性选择的度量是关键。 ### 1. 决策树原理 ## 决策树的特点 ## 优点:0 码力 | 39 页 | 1.84 MB | 2 年前3
Hello 算法 1.0.0b1 Python版2. 队列 5.3. 双向队列 5.4. 小结 6. 散列表 6.1. 哈希表 6.2. 哈希冲突 6.3. 小结 7. 树 7.1. 二叉树 7.2. 二叉树遍历 7.3. 二叉搜索树 7.4. AVL树* 7.5. 小结 8. 堆 8.1. 堆 8.2. 建堆操作* 8.3. 小结 9. 图 126 9.1. 图 126 9 复杂度分析:数据结构与算法的评价维度、算法效率的评估方法。时间复杂度、空间复杂度,包括推算方法、常见类型、示例等。 数据结构:常用的基本数据类型,数据在内存中的存储方式、数据结构分类方法。数组、链表、栈、队列、散列表、树、堆、图等数据结构,内容包括定义、优劣势、常用操作、常见类型、典型应用、实现方法等。 算法:查找算法、排序算法、搜索与回溯、动态规划、分治算法,内容包括定义、使用场景、优劣势、时空效率、实现方法、示例题目等。 1dafcdb3/p27_1.jpg) Figure 2-6. 对数阶的时间复杂度 与指数阶类似,对数阶也常出现于递归函数。以下代码形成了一个高度为 $ \log_{2} n $ 的递归树。 # === File: time_complexity.py === def log_recur(n): """ 对数阶(递归实现)"""0 码力 | 178 页 | 14.67 MB | 2 年前3
Hello 算法 1.0.0b1 Golang版2. 队列 5.3. 双向队列 5.4. 小结 6. 散列表 6.1. 哈希表 6.2. 哈希冲突 6.3. 小结 7. 树 7.1. 二叉树 7.2. 二叉树遍历 7.3. 二叉搜索树 7.4. AVL树* 7.5. 小结 8. 堆 8.1. 堆 8.2. 建堆操作* 8.3. 小结 10. 123 13 27 34 复杂度分析:数据结构与算法的评价维度、算法效率的评估方法。时间复杂度、空间复杂度,包括推算方法、常见类型、示例等。 数据结构:常用的基本数据类型,数据在内存中的存储方式、数据结构分类方法。数组、链表、栈、队列、散列表、树、堆、图等数据结构,内容包括定义、优劣势、常用操作、常见类型、典型应用、实现方法等。 算法:查找算法、排序算法、搜索与回溯、动态规划、分治算法,内容包括定义、使用场景、优劣势、时空效率、实现方法、示例题目等。 7e1393df/p28_1.jpg) Figure 2-6. 对数阶的时间复杂度 与指数阶类似,对数阶也常出现于递归函数。以下代码形成了一个高度为 $ \log_{2} n $ 的递归树。 /// = File: time_complexity.go === /* 对数阶(递归实现)*/ func logRecur(n float64) int { if n <= 10 码力 | 190 页 | 14.71 MB | 2 年前3
Hello 算法 1.0.0b1 Swift版2. 队列 5.3. 双向队列 5.4. 小结 6. 散列表 6.1. 哈希表 6.2. 哈希冲突 6.3. 小结 7. 树 7.1. 二叉树 7.2. 二叉树遍历 7.3. 二叉搜索树 7.4. AVL树* 7.5. 小结 8. 堆 8.1. 堆 8.2. 建堆操作* 8.3. 小结 9. 图 136 9.1. 图 136 9 复杂度分析:数据结构与算法的评价维度、算法效率的评估方法。时间复杂度、空间复杂度,包括推算方法、常见类型、示例等。 数据结构:常用的基本数据类型,数据在内存中的存储方式、数据结构分类方法。数组、链表、栈、队列、散列表、树、堆、图等数据结构,内容包括定义、优劣势、常用操作、常见类型、典型应用、实现方法等。 算法:查找算法、排序算法、搜索与回溯、动态规划、分治算法,内容包括定义、使用场景、优劣势、时空效率、实现方法、示例题目等。 c9220f0f/p28_1.jpg) Figure 2-6. 对数阶的时间复杂度 与指数阶类似,对数阶也常出现于递归函数。以下代码形成了一个高度为 $ \log_{2} n $ 的递归树。 /// == File: time_complexity.swift === /* 对数阶(递归实现) */ func logRecur(n: Double) -> Int { if0 码力 | 190 页 | 14.71 MB | 2 年前3
Hello 算法 1.0.0b1 JavaScript版2. 队列 5.3. 双向队列 5.4. 小结 6. 散列表 6.1. 哈希表 6.2. 哈希冲突 6.3. 小结 7. 树 7.1. 二叉树 7.2. 二叉树遍历 7.3. 二叉搜索树 7.4. AVL树* 7.5. 小结 8. 堆 8.1. 堆 8.2. 建堆操作* 8.3. 小结 101 109 120 122 复杂度分析:数据结构与算法的评价维度、算法效率的评估方法。时间复杂度、空间复杂度,包括推算方法、常见类型、示例等。 数据结构:常用的基本数据类型,数据在内存中的存储方式、数据结构分类方法。数组、链表、栈、队列、散列表、树、堆、图等数据结构,内容包括定义、优劣势、常用操作、常见类型、典型应用、实现方法等。 算法:查找算法、排序算法、搜索与回溯、动态规划、分治算法,内容包括定义、使用场景、优劣势、时空效率、实现方法、示例题目等。 c637b2bd/p28_1.jpg) Figure 2-6. 对数阶的时间复杂度 与指数阶类似,对数阶也常出现于递归函数。以下代码形成了一个高度为 $ \log_{2} n $ 的递归树。 /// == File: time_complexity.js === /* 对数阶(递归实现) */ function logRecur(n) { if (n <= 1) return0 码力 | 185 页 | 14.70 MB | 2 年前3
Hello 算法 1.0.0b2 Golang版2. 队列 5.3. 双向队列 5.4. 小结 6. 散列表 6.1. 哈希表 6.2. 哈希冲突 6.3. 小结 7. 树 7.1. 二叉树 7.2. 二叉树遍历 7.3. 二叉搜索树 7.4. AVL树* 7.5. 小结 8. 堆 8.1. 堆 8.2. 建堆操作* 8.3. 小结 101 104 113 126 复杂度分析:数据结构与算法的评价维度、算法效率的评估方法。时间复杂度、空间复杂度,包括推算方法、常见类型、示例等。 数据结构:常用的基本数据类型,数据在内存中的存储方式、数据结构分类方法。数组、链表、栈、队列、散列表、树、堆、图等数据结构,内容包括定义、优劣势、常用操作、常见类型、典型应用、实现方法等。 算法:查找算法、排序算法、搜索与回溯、动态规划、分治算法,内容包括定义、使用场景、优劣势、时空效率、实现方法、示例题目等。 0993e308/p28_1.jpg) Figure 2-6. 对数阶的时间复杂度 与指数阶类似,对数阶也常出现于递归函数。以下代码形成了一个高度为 $ \log_{2} n $ 的递归树。 /// = File: time_complexity.go === /* 对数阶(递归实现)*/ func logRecur(n float64) int { if n <= 10 码力 | 202 页 | 15.73 MB | 2 年前3
Hello 算法 1.0.0b2 C++版2. 队列 5.3. 双向队列 5.4. 小结 6. 散列表 6.1. 哈希表 6.2. 哈希冲突 6.3. 小结 7. 树 7.1. 二叉树 7.2. 二叉树遍历 7.3. 二叉搜索树 7.4. AVL树* 7.5. 小结 8. 堆 8.1. 堆 8.2. 建堆操作* 8.3. 小结 10.1. 堆 10.2. 堆堆操作* 复杂度分析:数据结构与算法的评价维度、算法效率的评估方法。时间复杂度、空间复杂度,包括推算方法、常见类型、示例等。 数据结构:常用的基本数据类型,数据在内存中的存储方式、数据结构分类方法。数组、链表、栈、队列、散列表、树、堆、图等数据结构,内容包括定义、优劣势、常用操作、常见类型、典型应用、实现方法等。 算法:查找算法、排序算法、搜索与回溯、动态规划、分治算法,内容包括定义、使用场景、优劣势、时空效率、实现方法、示例题目等。 5ceb5455/p28_1.jpg) Figure 2-6. 对数阶的时间复杂度 与指数阶类似,对数阶也常出现于递归函数。以下代码形成了一个高度为 $ \log_{2} n $ 的递归树。 /// == File: time_complexity.cpp === /* 对数阶(递归实现) */ int logRecur(float n) { if (n <= 1) return0 码力 | 197 页 | 15.72 MB | 2 年前3
Hello 算法 1.0.0b2 Java版2. 队列 5.3. 双向队列 5.4. 小结 6. 散列表 6.1. 哈希表 6.2. 哈希冲突 6.3. 小结 7. 树 7.1. 二叉树 7.2. 二叉树遍历 7.3. 二叉搜索树 7.4. AVL树* 7.5. 小结 8. 堆 8.1. 堆 8.2. 建堆操作* 8.3. 小结 100 103 111 123 复杂度分析:数据结构与算法的评价维度、算法效率的评估方法。时间复杂度、空间复杂度,包括推算方法、常见类型、示例等。 数据结构:常用的基本数据类型,数据在内存中的存储方式、数据结构分类方法。数组、链表、栈、队列、散列表、树、堆、图等数据结构,内容包括定义、优劣势、常用操作、常见类型、典型应用、实现方法等。 算法:查找算法、排序算法、搜索与回溯、动态规划、分治算法,内容包括定义、使用场景、优劣势、时空效率、实现方法、示例题目等。 4d66af79/p28_1.jpg) Figure 2-6. 对数阶的时间复杂度 与指数阶类似,对数阶也常出现于递归函数。以下代码形成了一个高度为 $ \log_{2} n $ 的递归树。 /// == File: time_complexity.java === /* 对数阶(递归实现) */ int logRecur(float n) { if (n <= 1) return0 码力 | 197 页 | 15.72 MB | 2 年前3
Hello 算法 1.0.0b2 Swift版2. 队列 5.3. 双向队列 5.4. 小结 6. 散列表 6.1. 哈希表 6.2. 哈希冲突 6.3. 小结 7. 树 7.1. 二叉树 7.2. 二叉树遍历 7.3. 二叉搜索树 7.4. AVL树* 7.5. 小结 8. 堆 8.1. 堆 8.2. 建堆操作* 8.3. 小结 9. 图 136 9.1. 图 136 9 复杂度分析:数据结构与算法的评价维度、算法效率的评估方法。时间复杂度、空间复杂度,包括推算方法、常见类型、示例等。 数据结构:常用的基本数据类型,数据在内存中的存储方式、数据结构分类方法。数组、链表、栈、队列、散列表、树、堆、图等数据结构,内容包括定义、优劣势、常用操作、常见类型、典型应用、实现方法等。 算法:查找算法、排序算法、搜索与回溯、动态规划、分治算法,内容包括定义、使用场景、优劣势、时空效率、实现方法、示例题目等。 6e259f0d/p28_1.jpg) Figure 2-6. 对数阶的时间复杂度 与指数阶类似,对数阶也常出现于递归函数。以下代码形成了一个高度为 $ \log_{2} n $ 的递归树。 /// == File: time_complexity.swift === /* 对数阶(递归实现) */ func logRecur(n: Double) -> Int { if0 码力 | 199 页 | 15.72 MB | 2 年前3
共 490 条
- 1
- 2
- 3
- 4
- 5
- 6
- 49













