解析树 完成树的实现之后,现在我们来看一个例子,告诉你怎么样利用树去解决一些实际问题。在这个章节,我们来研究解析树。解析树常常用于真实世界的结构表示,例如句子或数学表达式。 图 1:一个简单句的解析树 图 1 显示了一个…
分类:数据结构与算法
Python数据结构——树的实现
“嵌套列表”表示树 在用嵌套列表表示树时,我们使用 Python 的列表来编写这些函数。虽然把界面写成列表的一系列方法与我们已实现其他的抽象数据类型有些不同,但这样做比较有意思,因为它为我们提供一个简单、可以直接查看的递…
Python数据结构——树的基本概念
树的例子 我们已经学过了像栈和队列这样的线性数据结构,同时我们对递归也有了一定的了解,现在让我们来看看另一种常见的数据结构——树(Tree)。树在计算机科学里应用广泛,包括操作系统,图形学,数据库和计算机网络。树和真正的…
Python数据结构——双端队列
双端队列(Deque),是一种类似于队列的元素的有序集合。它拥有两端,队首和队尾,并且元素保持在当前的位置。双端队列的一个不同点就是,添加和删除元素的位置不受限制。新元素可以在队首或者队尾添加。同样地,双端队列中的元素可…
Python数据结构——队列
队列是一种列表,不同的是队列只能在队尾插入元素,在队首删除元素。队列用于存储按顺序排列的数据,先进先出,这点和栈不一样,在栈中,最后入栈的元素反而被优先处理。可以将队列想象成在银行前排队的人群,排在最前面的人第一个办理业…
Python数据结构——栈
栈是一种特殊的列表,栈内的元素只能通过列表的一端访问,这一端称为栈顶。咖啡厅内的一摞盘子是现实世界中常见的栈的例子。只能从最上面取盘子,盘子洗净后,也只能摞在这一摞盘子的最上面。栈被称为一种后入先出(LIFO,last-…
数据结构与算法系列——二分查找
二分查找算法的简单介绍 今天我们来学习一下二分查找算法,也叫做折半查找算法。使用二分查找算法的前提是数据需要是有序的。二分查找的思想非常简单,很容易理解,就是每次取中间位置的数和要找的数作比较,通过判断是大还是小来重新选…
数据结构与算法系列——递归
递归的理解 在学习数据结构和算法的过程中,递归可能是比较难理解的一个知识点,每次都试着用自己的大脑去把一步一步去想清楚,结果最后把自己都绕晕了。 我们很多人都遇到过这种情况,读源码的时候,我们想弄清楚一个方法的具体实现,…
数据结构与算法——散列表
什么是散列表 散列表(hash table),我们平时叫它哈希表或者Hash 表,你肯定经常听到它。 散列表是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问…