
数据结构
jchen104
芝兰生于幽谷,不以无人而不芳
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
python实现哈夫曼树
这次是哈夫曼树,又叫最优二叉树,特点就是最大的在上面,小的在下面。建立步骤大概就是这样的,每次选两个2最小的建立一个然后加上去再做重复操作现在我们来试着来写出哈夫曼树首先需要定义一个节点类来保存节点信息,这个节点需要保存的信息包括:数值,左右孩子,是否已加入数中class Node(): def __init__(self,item): self.it...原创 2018-08-03 20:50:22 · 5335 阅读 · 1 评论 -
python写一个二叉树
先来设计下怎么实现二叉树,首先一个节点类和树类是需要的,所以需要class node 和class treeclass node: def __init__(self): passclass tree: def __init__(self): pass接下来是看功能,节点和树需要实例化,同时树需要一个add方法来把新的节点加进去,可以确定的是,...原创 2018-07-31 02:01:23 · 9730 阅读 · 2 评论 -
python二分查找
这里循序查找就不写了,一次遍历的事二分查找只适用于有序的线性表,换句话说,树,图这些结构无法使用,乱序也无法使用 二分是数据结构里非常重要的一个概念,基于二分有很多高效的算法,可以成功的把复杂度降到的程度二分查找的思路就很简单了,每次取中间的数和查找的数比较,大了就往右,小了就往左def binsearch(lis,item): low=0 high=len(...原创 2018-08-05 15:40:11 · 269 阅读 · 0 评论 -
python二叉查找树
二叉查找树是二叉树的进化型,特点就是前序遍历得到的数组是递增关系,通俗点就是左孩子最小,父节点次之,右孩子最大这里仿照之前写二叉树的过程来,首先定义两个类class Node(): def __init__(self,item): self.item=item self.left=None self.right=Noneclas...原创 2018-08-05 17:27:45 · 3081 阅读 · 0 评论 -
几种排序的实现
(1)冒泡排序冒泡排序基本的思路就是2层循环,每次比较相邻2个数,每次把大的数往后移,一层循环下来就能确定一个,这里做了一点优化,内存循环的范围不用一直到底,只要到上一次循环之前就行def bubblesort(l): for x in range(len(l)): for y in range(len(l)-x-1): if l[y]&g...原创 2018-08-05 23:13:19 · 279 阅读 · 0 评论 -
python实现二叉树的遍历
一个二叉树节点可以分为父节点和左右孩子节点,一般遍历的方法是前中后序遍历以及层次遍历前序遍历:父节点,左节点,右节点中序遍历:左节点,父节点,右节点后序遍历:左节点,右节点,父节点基于这样的一个逻辑顺序我们可以很简单的写出一个二叉树的遍历方法def pre(root): #前序 if root==None: return print ro...原创 2018-08-01 16:02:37 · 4084 阅读 · 0 评论 -
python实现栈和队列
这次我们来模拟栈和队列,这里为什么用的是模拟而不是实现的?因为python的list对象事实上已经足够我们对于栈和队列的使用需求,append,insert,pop三个函数足够我们的使用,所以这次我们只是来娱乐一下,模拟看看。 栈的定义:输出受限的线性数据结构,通俗点就是底部不允许出来,只能后进先出于是我们用一个Stack类来实现class Stack(obkect): ...原创 2018-08-03 15:44:44 · 807 阅读 · 1 评论