数据结构和算法-python实现
LELELED
这个作者很懒,什么都没留下…
展开
-
数据结构与算法-链表定义和单向链表的实现
链表为什么需要链表顺序表的构建需要预先知道数据大小来申请连续的存储空间,而在进行扩充时又需要进行数据的搬迁,所以使用起来并不是很灵活。链表结构可以充分利用计算机内存空间,实现灵活的内存动态管理。链表的定义链表(Linked list)是一种常见的基础数据结构,是一种线性表,但是不像顺序表一样连续存储数据,而是在每一个节点(数据存储单元)里存放下一个节点的位置信息(即地址)。...原创 2019-01-17 09:59:22 · 413 阅读 · 0 评论 -
数据结构与算法-链表之单向循环链表
单向循环链表单链表的一个变形是单向循环链表,链表中最后一个节点的next域不再为None,而是指向链表的头节点。实现:class Node(object): """节点""" def __init__(self, elem): self.elem = elem self.next = Noneclass SingleLinkList...原创 2019-01-17 10:42:54 · 168 阅读 · 0 评论 -
数据结构与算法-链表之双向链表
双向链表一种更复杂的链表是“双向链表”或“双面链表”。每个节点有两个链接:一个指向前一个节点,当此节点为第一个节点时,指向空值;而另一个指向下一个节点,当此节点为最后一个节点时,指向空值。实现:class Node(object): """节点""" def __init__(self, elem): self.elem = elem ...原创 2019-01-17 10:45:18 · 148 阅读 · 0 评论 -
数据结构与算法-树与树的算法开篇
树与树算法树的概念树(英语:tree)是一种抽象数据类型(ADT)或是实作这种抽象数据类型的数据结构,用来模拟具有树状结构性质的数据集合。它是由n(n>=1)个有限节点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点:每个节点有零个或多个子节点; 没有父节点的节点称为根节点; 每一个非根节点有且只有一个父...原创 2019-01-22 09:32:47 · 154 阅读 · 0 评论 -
数据结构与算法-二叉树
二叉树的基本概念二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)二叉树的性质(特性)性质1: 在二叉树的第i层上至多有2^(i-1)个结点(i>0)性质2: 深度为k的二叉树至多有2^k - 1个结点(k>0)性质3: 对于任意一棵二叉树,如果其叶结点数为N0,而度数为2的结点总数为N2,...原创 2019-01-22 09:54:38 · 210 阅读 · 0 评论 -
数据结构与算法-二叉树的遍历(含非递归)
二叉树的遍历树的遍历是树的一种重要的运算。所谓遍历是指对树中所有结点的信息的访问,即依次对树中每个结点访问一次且仅访问一次,我们把这种对所有节点的访问称为遍历(traversal)。那么树的两种重要的遍历模式是深度优先遍历和广度优先遍历,深度优先一般用递归,广度优先一般用队列。一般情况下能用递归实现的算法大部分也能用堆栈来实现。 广度优先遍历(层次遍历)从树的root开始,从上到下...原创 2019-01-22 12:00:04 · 290 阅读 · 0 评论 -
数据结构和算法-入门篇
开篇词:这是自学路上的开篇博客,记录自己在数据结构和算法的学习心得。评价一个算法的好坏,我们通常用时间复杂度 O 来衡量,它描述的是一个算法的处理规模量级的所需时间,大体上说,时间复杂度越低,这个算法就越好,当然这里只是讨论时间复杂度,还有其他影响算法的要素,比如空间复杂度,空间复杂度也就是运行规模为n的算法需要多少内存空间。还有机器之间的差异也会造成同种算法之间的运行效率不同。 注...原创 2019-01-17 09:39:55 · 157 阅读 · 0 评论 -
数据结构与算法-顺序表
Python中的顺序表Python中的list和tuple两种类型采用了顺序表的实现技术,具有前面讨论的顺序表的所有性质。tuple是不可变类型,即不变的顺序表,因此不支持改变其内部状态的任何操作,而其他方面,则与list的性质类似。list的基本实现技术Python标准类型list就是一种元素个数可变的线性表,可以加入和删除元素,并在各种操作中维持已有元素的顺序(即保序),而且还...原创 2019-01-17 09:49:57 · 227 阅读 · 0 评论 -
数据结构与算法-求二叉树某个节点的前驱节点与后继节点
二叉树的后继节点什么是二叉树的后继节点呢? 就是这颗二叉树中序遍历顺序中,当前节点的下一个节点称为这个当前节点的后继节点。与之相反的是前驱节点,前驱节点,就是二叉树中序遍历的顺序中,当前节点的上一个节点。如下图: 那么下面我们来看一道具体的面试题 : 【题目】 现在有一种新的二叉树节点类型如下,在此节点类型的二叉树中找到一个节点的后继节点class Node...原创 2019-01-23 11:14:17 · 2224 阅读 · 0 评论