大数据数据结构和算法_树1_二叉搜索树部分
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
的孩子节点,也就是下一层和M相连的节点。
• 父节点:一个节点M,上一层和它相连的节点就是M
的父节点。
• 兄弟节点:具有同一个父节点的节点互为兄弟节点。 • 层次:根是第1层,根的子节点是第2层,依次类
推。
• 树高或树深:树的最大层次。
“北”是“大”的父 节点 “大”是“北”的子 节点
大
这棵树深为6,度为3
树
- 满二叉树:节点数为满(2^N – 1)的二叉树。 - 完全二叉树:除了最后一层外,其它层的节点都满。
20
12
25
9
18
23
30
8 11 15 20
20
12
25
18
30
19
完全二叉搜索树
20
二叉搜索树
12
25
9
18
23
30
8 11 15 20
22 24
29 50
满二叉搜索树
树
20
12
25
9
17
树
树:一种由有限个节点组成的有层次关系的数据结构。 -子节点:一个节点M如果有子树,则子树的根就是M的孩子节 点,也就是下一层和M相连的节点。 -父节点:一个节点M,上一层和它相连的节点就是M的父节点。 -兄弟节点:具有同一个父节点的节点互为兄弟节点。 -层次:根是第1层,根的子节点是第2层,依次类推。 -树高或树深:树的最大层次。
中序遍历过程: 访问20的左子树:
访问12的左子树: 访问9的左子树:空 访问9; 访问9的右子树:访问11
树
• 节点:每个元素称为节点。 • 根:所有节点的共同祖先。 • 子树:除根节点外,其它的元素的集合如果也可以组
成一颗树,称为子树。
• 度:一个节点含有的子树的个数,称为度。 • 树的度:所有节点中最大的度。 • 叶子节点:度=0的节点。 • 分支(非叶)节点:度!=0的节点。 • 子节点:一个节点M如果有子树,则子树的根就是M
访问19 访问19的左子树:访问18 访问19的右子树:空 访问20的右子树: 访问25: 访问25的左子树:空 访问25的右子树:访问30
树
二叉树的遍历:
20
12
25
9
17
30
11
19
18
中序遍历递归算法: 如果T为空,返回; 访问左子树; 访问根节点; 访问右子树;
中序遍历结果: 9,11,12,17,18,19,20,25,30
树
二叉树的遍历:
20
12
25
9
17
30
11
19
18
先序遍历递归算法: 如果T为空,返回; 访问根节点; 访问左子树; 访问右子树;
先序遍历结果: 20,12,9,11,17,19,18,25,30
先序遍历过程: 访问20: 访问20的左子树:
访问12 访问12的左子树:
访问9: 访问9的左子树:空 访问9的右子树:访问11 访问12的右子树: 访问17 访问17的左子树:空 访问17的右子树:
数据场景
Red Black Tree 红黑树
写多的场景nginx、 linux:vma查找
Binary Decision Tree 二叉判定树
条件判定、分类、人工智能判定、游戏中 的情景判定
N-ary Tree 多叉树
B、B+、B*Tree 文件系统、数据 库索引(一维)
Q-Tree、OcTree 四叉、八叉树 空间索引、游戏 碰撞检测
北 风
根节点,度为3,层次1
分支节点,度 为2
网
数
据
任
就
,
是
叶子节点,
性
度为0
这
么
.
子树
子树 层次:2 度:2
兄弟节点
树
二叉树(Binary Tree):是一棵树,每个节点最多有两个孩子。
null
二叉树可以是空树
左子树
二叉树
根
右子树
左、右子树可为 空,也可不为空
树
二叉树(Binary Tree):是一棵树,每个节点最多有两个孩子。
二叉树的应用意义: -层次化组织:继承了树的优点,解决数据量大时链表的线性访 问的效率低的问题。 -分类判定:分叉的性质可以处理分类的问题,分类就是一种判 定问题,这在人工智能判定和游戏设计中的判定中非常有用。 -排序优化:采用完全二叉树或类完全二叉树的堆进行排序优化, 效率很高。 -平衡树:通过降低树的层次保持平衡,如AVL树、RB树,对非 随机二叉树的优化使得天然地能高效处理增、删、改、查。 -数据压缩:gzip、zip、png图像的压缩算法,deflate算法中利 用huffman树进行二次压缩。
30
11
19
18
二叉搜索树(BinarySearchTree) 的递归定义:
T 是一棵空树. 如果TL不为空,则有TL.key Root.key. 如果TR不为空,则有TR .key Root.key. TL、TR同时也是一棵二叉搜索树.
TL、TR分别代表左右子树,Root ,代表根,key是关键字.
树
叶子(leaf)
分支(branch) 根(root)
树
Complete BT 完全二叉树 Huffman Tree 哈夫曼树
gzip、png压 缩
Binary Heap 二叉堆
优先队列、堆 排序
Tree 树
Binary Tree 二叉树
Binary Search Tree 二叉搜索树
AVL Tree 平衡二叉搜索树 读多写少的大量
数据结构和算法
第五课 非线性结构-树1
树
本课时目标: ✓基础环节*:了解树的含义 ✓基础环节**:了解二叉树(满、完全、平衡)的结构特性 ✓实操环节**:掌握二叉树的遍历(前序、中序、后序) ✓基础环节****:理解二叉查找树、AVL树的性质和主要操作 ✓扩展环节:讲述B+树的结构特性,并结合innoDB索引组织方 式来分析B+树在实际数据库设计中的表现,最后介绍 facebook处理FTS(全表扫描)的效率上的一些优化,以此加 深大家对树结构的理解和其在数据处理方面的意义。
R-Tree 矩型树 空间数据库索 引(多维)
LSM-Tree 日志型合并树 内存有序、外
存B+ LevelDB、
HBase
Trie-Tree 字典树
去重、前缀匹配、搜 索词提示、热词统计
Radix Tree 基数树
快查、Linux:page cache,nginx内存管理
树
树:一种由有限个节点组成的有层次关系的数据结构。 -节点:每个元素称为节点。 -根:所有节点的共同祖先。 -子树:除根节点外,其它的元素的集合如果也可以组成一颗树, 称为子树。 -度:一个节点含有的子树的个数,称为度。 -树的度:所有节点中最大的度。 -叶子节点:度=0的节点。 -分支(非叶)节点:度!=0的节点。
• 父节点:一个节点M,上一层和它相连的节点就是M
的父节点。
• 兄弟节点:具有同一个父节点的节点互为兄弟节点。 • 层次:根是第1层,根的子节点是第2层,依次类
推。
• 树高或树深:树的最大层次。
“北”是“大”的父 节点 “大”是“北”的子 节点
大
这棵树深为6,度为3
树
- 满二叉树:节点数为满(2^N – 1)的二叉树。 - 完全二叉树:除了最后一层外,其它层的节点都满。
20
12
25
9
18
23
30
8 11 15 20
20
12
25
18
30
19
完全二叉搜索树
20
二叉搜索树
12
25
9
18
23
30
8 11 15 20
22 24
29 50
满二叉搜索树
树
20
12
25
9
17
树
树:一种由有限个节点组成的有层次关系的数据结构。 -子节点:一个节点M如果有子树,则子树的根就是M的孩子节 点,也就是下一层和M相连的节点。 -父节点:一个节点M,上一层和它相连的节点就是M的父节点。 -兄弟节点:具有同一个父节点的节点互为兄弟节点。 -层次:根是第1层,根的子节点是第2层,依次类推。 -树高或树深:树的最大层次。
中序遍历过程: 访问20的左子树:
访问12的左子树: 访问9的左子树:空 访问9; 访问9的右子树:访问11
树
• 节点:每个元素称为节点。 • 根:所有节点的共同祖先。 • 子树:除根节点外,其它的元素的集合如果也可以组
成一颗树,称为子树。
• 度:一个节点含有的子树的个数,称为度。 • 树的度:所有节点中最大的度。 • 叶子节点:度=0的节点。 • 分支(非叶)节点:度!=0的节点。 • 子节点:一个节点M如果有子树,则子树的根就是M
访问19 访问19的左子树:访问18 访问19的右子树:空 访问20的右子树: 访问25: 访问25的左子树:空 访问25的右子树:访问30
树
二叉树的遍历:
20
12
25
9
17
30
11
19
18
中序遍历递归算法: 如果T为空,返回; 访问左子树; 访问根节点; 访问右子树;
中序遍历结果: 9,11,12,17,18,19,20,25,30
树
二叉树的遍历:
20
12
25
9
17
30
11
19
18
先序遍历递归算法: 如果T为空,返回; 访问根节点; 访问左子树; 访问右子树;
先序遍历结果: 20,12,9,11,17,19,18,25,30
先序遍历过程: 访问20: 访问20的左子树:
访问12 访问12的左子树:
访问9: 访问9的左子树:空 访问9的右子树:访问11 访问12的右子树: 访问17 访问17的左子树:空 访问17的右子树:
数据场景
Red Black Tree 红黑树
写多的场景nginx、 linux:vma查找
Binary Decision Tree 二叉判定树
条件判定、分类、人工智能判定、游戏中 的情景判定
N-ary Tree 多叉树
B、B+、B*Tree 文件系统、数据 库索引(一维)
Q-Tree、OcTree 四叉、八叉树 空间索引、游戏 碰撞检测
北 风
根节点,度为3,层次1
分支节点,度 为2
网
数
据
任
就
,
是
叶子节点,
性
度为0
这
么
.
子树
子树 层次:2 度:2
兄弟节点
树
二叉树(Binary Tree):是一棵树,每个节点最多有两个孩子。
null
二叉树可以是空树
左子树
二叉树
根
右子树
左、右子树可为 空,也可不为空
树
二叉树(Binary Tree):是一棵树,每个节点最多有两个孩子。
二叉树的应用意义: -层次化组织:继承了树的优点,解决数据量大时链表的线性访 问的效率低的问题。 -分类判定:分叉的性质可以处理分类的问题,分类就是一种判 定问题,这在人工智能判定和游戏设计中的判定中非常有用。 -排序优化:采用完全二叉树或类完全二叉树的堆进行排序优化, 效率很高。 -平衡树:通过降低树的层次保持平衡,如AVL树、RB树,对非 随机二叉树的优化使得天然地能高效处理增、删、改、查。 -数据压缩:gzip、zip、png图像的压缩算法,deflate算法中利 用huffman树进行二次压缩。
30
11
19
18
二叉搜索树(BinarySearchTree) 的递归定义:
T 是一棵空树. 如果TL不为空,则有TL.key Root.key. 如果TR不为空,则有TR .key Root.key. TL、TR同时也是一棵二叉搜索树.
TL、TR分别代表左右子树,Root ,代表根,key是关键字.
树
叶子(leaf)
分支(branch) 根(root)
树
Complete BT 完全二叉树 Huffman Tree 哈夫曼树
gzip、png压 缩
Binary Heap 二叉堆
优先队列、堆 排序
Tree 树
Binary Tree 二叉树
Binary Search Tree 二叉搜索树
AVL Tree 平衡二叉搜索树 读多写少的大量
数据结构和算法
第五课 非线性结构-树1
树
本课时目标: ✓基础环节*:了解树的含义 ✓基础环节**:了解二叉树(满、完全、平衡)的结构特性 ✓实操环节**:掌握二叉树的遍历(前序、中序、后序) ✓基础环节****:理解二叉查找树、AVL树的性质和主要操作 ✓扩展环节:讲述B+树的结构特性,并结合innoDB索引组织方 式来分析B+树在实际数据库设计中的表现,最后介绍 facebook处理FTS(全表扫描)的效率上的一些优化,以此加 深大家对树结构的理解和其在数据处理方面的意义。
R-Tree 矩型树 空间数据库索 引(多维)
LSM-Tree 日志型合并树 内存有序、外
存B+ LevelDB、
HBase
Trie-Tree 字典树
去重、前缀匹配、搜 索词提示、热词统计
Radix Tree 基数树
快查、Linux:page cache,nginx内存管理
树
树:一种由有限个节点组成的有层次关系的数据结构。 -节点:每个元素称为节点。 -根:所有节点的共同祖先。 -子树:除根节点外,其它的元素的集合如果也可以组成一颗树, 称为子树。 -度:一个节点含有的子树的个数,称为度。 -树的度:所有节点中最大的度。 -叶子节点:度=0的节点。 -分支(非叶)节点:度!=0的节点。