数据结构之哈希表,树和堆什么是数据结构?•在计算机科学中,数据结构(英语:datastructure)是计算机中存储、组织数据的方式。为什么需要数据结构?•正确的数据结构选择可以提高算法的效率有哪些常见数据结构•哈希表(Hashtable)•树(Tree)•堆(Heap)•图(Graph)•堆栈(Stack)•数组(Array)•链表(LinkedList)•队列(Queue)哈希表•也叫散列表(Hashtable),是根据键(Key)而直接访问在内存储存位置的数据结构。也就是说,它通过计算一个关于键值的函数,将所需查询的数据映射到表中一个位置来访问记录,这加快了查找速度。这个映射函数称做散列函数,存放记录的数组称做散列表。无处不在哈希表•为了查找电话簿中某人的号码,可以创建一个按照人名首字母顺序排列的表(即建立人名x到首字母F(x)的一个函数关系),在首字母为W的表中查找“王”姓的电话号码,显然比直接查找就要快得多。这里使用人名作为关键字,“取首字母”是这个例子中散列函数的函数法则F(),存放首字母的表对应散列表。关键字和函数法则理论上可以任意确定。哈希表在Python中的应用•字典通常也被称为映射、散列表、查找表或关联数组。字典能够高效查找、插入和删除任何与给定键关联的对象。•字典的键可以是数字、字符串或者是元组,键必须唯一。•时间复杂度是O(1),空间复杂度是O(n)。哈希表实战1哈希表实战1哈希表实战2哈希表实战2•1.数组:哈希表实战2•2.哈希表:哈希表实战2•3.位运算:哈希表总结•1.哈希表既具备快速查询,又能快速插入删除元素。•2.哈希表的最主要有点是利用它能在o(1)时间内找到某一元素,效率最高的查找方式。•3.哈希表是最典型的用空间换时间的数据结构。树•在图论中,树(英语:Tree)是一种无向图(undirectedgraph),其中任意两个顶点间存在唯一一条路径。或者说,只要没有回路的连通图就是树。•树图广泛应用于计算机科学的数据结构中,比如二叉查找树,Trie树(前缀树)以及数据压缩中的霍夫曼树等等。树的遍历•前序遍历先访问根节点,然后再访问所有的子树;•后序遍历先访问子树,然后再访问根节点;•中序遍历是二叉树专用,先访问左子树,然后是根节点,最后是右子树。前序遍历•根结点--->左子树--->右子树•前序遍历顺序:1245783612345678后序遍历•左子树--->右子树--->根结点•后序遍历顺序:4785263112345678中序遍历•左子树--->根结点--->右子树•中序遍历顺序:4275813612345678层次遍历Breadth-f...