算法学习week5

2021-02-06  本文已影响0人  打出了枫采

Coursera算法part1课程学习记录和回顾。
第五周的课程介绍平衡二叉树,讲解了2-3搜索树,以及由其引入红黑树,和平衡二叉树的几何应用。
本周课程是算法I部分中最难的章节,建议多按照书中的2-3搜索树引入的过程,以及红黑树的引入过程来仔细理解。由2-3搜索树来引入红黑树,对红黑树的理解有极大帮助。

1. 2-3 Tree (2-3节点树)

2. Red-Black Tree 红黑树

在2-3 Tree的基础上,将2-key 3-node的父节点的两个key中间增加标记成红色的链接,其他node key之间的链接都标记成黑色,且红色链接始终在节点的左侧


image.png

插入操作时的左旋右旋变换以及节点颜色反转的情景类似于2-3 Tree插入时的变换情景,并保持红黑树的红链接始终在左侧(红色子节点在左侧,且红色节点的子节点都是黑色节点)
个人也没有很熟悉透彻理解,细节相对复杂,说明暂略,建议看原书章节或者参考其他人博客讲解

这两种数据结构的优点是元素的增删改查的速度都非常快


image.png

3. 本周的作业是从给定的一组点集合中,找出最近的点

要求用暴力解法和2d-Tree两种方式分别来解,2d-Tree是根据点坐标的x y值交替划线来分割二维平面,分割成小的矩形区域,判断点到矩形区域的距离来解。做的一般,花了很久的时间,实现还是有些问题存在。

Correctness:  31/35 tests passed
Memory:       16/16 tests passed
Timing:       34/42 tests passed

Aggregate score: 89.33%
[Compilation: 5%, API: 5%, SpotBugs: 0%, PMD: 0%, Checkstyle: 0%, Correctness: 60%, Memory: 10%, Timing: 20%]
上一篇 下一篇

猜你喜欢

热点阅读