
python数据结构与算法
飞奔的帅帅
马云给你还花呗
展开
-
创建单链表:头插法与尾插法
1 简述创建单链表有两种方式:头插法与尾插法尾插法是在链表的结尾增加新的节点头插法是插入头节点后面,剩余节点前面2 尾插法步骤需要新建一个尾节点tail,(初始head=tail) 创建新的节点new,连接到尾节点,tail.next = new 尾节点后移,tail = newQ:为什么要加新的节点?A:因为head的节点不能动,增加新的节点让其移动,让其指向最...原创 2019-10-25 21:18:17 · 1107 阅读 · 0 评论 -
后续遍历-python
# 后续遍历是,左右根,逆序是 根右左,# 和前序遍历很像,利用前序遍历的方法实现根右左的遍历# 然后逆序打印def pos_order(root): if not root: print("") stack = [] # 用来实现根右左的遍历 temp = [] # 中间结果 stack.append(root) wh...原创 2019-10-23 22:24:47 · 307 阅读 · 0 评论 -
二叉树的中序遍历-python
def mid_order(root): if root == None: print("") stack = [] stack.append(root) while len(stack) or root != None: if root != None: stack.append(root.left) ...原创 2019-10-23 22:12:58 · 215 阅读 · 0 评论 -
二叉树的前序遍历-python
def pre_order(root): if root == None: print("") stack = [] stack.append(root) while len(stack): pop = stack.pop() print(pop.val) if pop.right != N...原创 2019-10-23 21:44:47 · 290 阅读 · 0 评论 -
python求树的深度
def tree_depth(root): if root == None: return 0 depth = 0 temp = [] temp.append(root) while len(temp): depth += 1 length = len(temp) while len...原创 2019-10-23 21:35:35 · 1448 阅读 · 1 评论 -
普利姆算法Prim -python
1 解决的问题求最小生成树的算法,贪心算法在包含n个顶点的连通图中,找出只有n-1条边包含所有n个顶点的连通子图,就是极小连通图场景:n个顶点连通的最短路径2 算法原理无向图的最小生成树算法,结果生成最小生成树https://www.cnblogs.com/wuchanming/p/4147419.htmlV是所有顶点的集合,即V={A,B,C,D,E,F,G}U存...原创 2019-10-15 11:53:55 · 419 阅读 · 0 评论 -
弗洛伊德算法-python
1 解决的问题从某一点到达任意一点的最短距离,任意两个节点之间的最短距离来源https://blog.youkuaiyun.com/shezjoe/article/details/806701882 思想找一个中间点,经过中间点的距离与不经过中间点的距离是不是更小例如: 1 -> 3不经过中间点 d13 = 6加入经过2,d12 + d23 = 2 + 3 =5 &...原创 2019-10-14 21:01:46 · 3832 阅读 · 1 评论 -
迪杰斯特拉算法-python3
1 解决的问题从一个点出发,分别到其他各个点的最短路径例如,从A出发,分别到B、C、D、E点的最短路径即A -> B,A -> C,A -> D,A -> E的距离分别最小2 算法原理迪杰斯特拉算法主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。迪杰斯特拉算法每次只找离起点最近的一个结点,并将之并入已经访问过结点的集合(以防重复访问,陷...原创 2019-10-14 20:11:06 · 461 阅读 · 0 评论 -
秋招常考题
1、反转链表1、为防止与原来的链表结构断裂,需要保存当前的结构信息,即tmp=hHead.next2、直接用pHead反向指向,pHead.next=pre3、开始时pre=None4、元素后移。pre=pHead,此时pHead.next反向已经指向了,但之前tmp保存了原始的hHead.next信息所以,pHead=tmp5、有的博客里用pre,cur,这里cur=pH...原创 2018-10-27 16:57:50 · 167 阅读 · 0 评论 -
python用二进制实现十进制的加法运算
1原理1.1 正数十进制下:5 + 7 = 125: 01017: 0111二进制下两数求和,分三步:各位值相加,不算进位值,二进制亦或运算 计算进位值,二进制与运算,然后左移一位; 对1,2步的结果,重复以上两步骤两数之和就是不计算进位值加上进位值,直到没有进位第二部为什么要左移?当你在十进制下计算5+7时,进位向前一位进1,也就是相当于左移5 + 7的...原创 2018-09-03 12:15:14 · 3421 阅读 · 0 评论 -
python 树
1 树的高度和深度1.1 高度对于高度,就像楼房,问你一幢楼有多高?然后,你就从下往上一层一层的数。树也是根据习惯,从下往上数的。还有一个问题,对于楼房,地面上的一层是第一层,然后依次往上是第二层、第三次。。。对于树,最下面的叶子节点是指第一层吗?先看看树高度的定义:树某个节点x的高度;高度:从结点x向下到某个叶结点最长简单路径中边的条数。这个定义有两点需要注意:1...原创 2018-08-29 12:02:51 · 624 阅读 · 0 评论 -
python3链表
1 链表的实现 class ListNode: def __init__(self, x): self.val = x self.next = None链表的节点相同是指链表里的值相同,即self.val相等链表的操作是通过头结点进行操作的,例如一个链表的头结点head,下一个节点就是head.next,头结点的值head.val例子:输入...原创 2018-08-29 11:35:17 · 2788 阅读 · 0 评论 -
python 3 实现七大排序
1、冒泡排序(bubble sort)冒泡排序每次比较相邻的元素,如果前面一个数大,则交换,否则,不交换。首先,定义了一个随机数列,然后是冒泡排序,时间复杂度O(n^2)import randomimport randomdef get_list(num): list_ = [] for i in range(num): list_.append(...原创 2018-03-23 11:55:00 · 652 阅读 · 0 评论 -
数据结构与算法:python语言描述之队列
1、队列的形象描述队列就像一列排队买东西的人,来得早,买的早,走得早,所以是一种先进先出(first-in, first-out (FIFO))的序列。看个队列进出的图片介绍:2、python实现#应用python列表来实现队列class Stack: #创建一个空队列 def __init__(self): self._qlist = list() #判...原创 2018-03-25 15:44:52 · 431 阅读 · 0 评论 -
数据结构与算法:python语言描述之堆栈
1、形象表述堆栈常用来存储数据,它遵循后入先出(last-in rst-out (LIFO))的规则。下面这张图形象的描述了进栈、出栈的过程:(a):把数值19压进栈,(b):把数值5压进栈(c):把值19和5压进栈后产生的堆栈(d):出栈,从栈顶弹出2、python实现对栈我们定义了一些操作函数:Stack():创建一个新的空栈isEmpty():判断是否空栈,返回布尔数值length():返回...原创 2018-03-25 15:27:44 · 521 阅读 · 0 评论 -
数据结构与算法:python语言解释 之 通俗理解二叉树前序中序后序遍历
二叉树遍历有深度遍历和宽度遍历,深度遍历就是指前序遍历,中序遍历,后序遍历,宽度遍历就是指层次遍历,每一层从上到下,从左到右的遍历。层次遍历的过程,如下图所示:前序遍历:根节点 --> 左子树 --> 右子树中序遍历: 左子树 --> 根节点 --> 右子树后序遍历: 左子树 --> 右子树 --> 根节点注意:根节点指一个节点,就一个小圆圈前序遍历,中序遍历,...原创 2018-03-24 18:01:14 · 322 阅读 · 0 评论