数据结构与算法
从最基础的链表开始,探索各种运用于编程开发中的常见数据结构与算法。
干燥剂007860
这个作者很懒,什么都没留下…
展开
-
教案01 概述
基本概念 逻辑结构 所处理的对象的内在逻辑特性。比如线性表、树、图等。 存储方式 数据的存储手段。比如顺序存储、链式存储、散列存储等。 算法 基于某种的存储方式,对特定的逻辑结构的数据对象实施的操作集合。比如对链式存储的线性表,实施诸如初始化、插入、删除、销毁等操作。 逻辑结构 逻辑结构指的是数据之间的内在相互关系,常见的逻辑结构有4种,分别是: 集合 集合中的数据从属于某一类别,但彼此之间没有关系。 线性表 线性表是一种严格的数学定义,其表述是:任何一个节点有且仅有一个直接前驱(第一个原创 2020-10-13 17:21:12 · 227 阅读 · 0 评论 -
非线性数据结构 之 二叉搜索树(BST)
在非线性结构中,二叉树作为最常用的数据结构被广泛地运用于各个领域,而如果将二叉树节点的关键字按照某种大小关系存储,可以建立所谓的二叉搜索树,比如: 从图中可以看到,这棵树的任意一个子树,都满足:根节点比左子树任意节点大(也可以相等),比右子树任意节点小。这样的二叉树称为二叉搜索树,也称为BST树。 这样的二叉树有什么好处呢?好处在于,如果我们要查找树种的某一个节点,从根节点找起原创 2013-02-17 16:49:15 · 1880 阅读 · 0 评论 -
非线性数据结构 之 AVL树(1)
之前讨论过BST树,BST树不是一种平衡树,什么叫平衡树呢? 所谓的平衡指的是一棵树的左右两棵子树的高度差,如果高度差小于等于1,我们就认为是平衡的,否则就是不平衡的,试想一下,如果按顺序插入1,2,3,4,5,6,7这么几个数的话,就会构造出一棵右倾的BST树,所有的子节点都是其父节点的右孩子,这样的BST的搜索查找性能就被退化成线性的了。所以树的平衡性是衡量一棵树的最重要的指标。 平原创 2013-02-18 07:47:01 · 1265 阅读 · 0 评论 -
非线性数据结构 之 AVL树(2)
这一节关注AVL树的删除操作,相对于插入和查找,AVL树的删除要复杂得多。 首先,如果不考虑“平衡性”,那么删除一个节点也不难,就是BST树的思路。 一开始,在树中查找这个节点,如果找不到,那就返回。如果找到了,那么再细分三种情况: 1. 这个待删除节点有左子树,那么我们要做的就是将其左子树中最大的节点替换该节点,然后再将左子树中的那个节点删除即可(递归算法):原创 2013-02-27 15:29:21 · 1286 阅读 · 3 评论 -
关于女神SQLite的疑惑(2)
原创 2017-12-29 15:54:57 · 697 阅读 · 2 评论