摘要:一、二叉树的深度优先遍历 对于一颗二叉树,深度优先搜索(Depth First Search)是沿着树的深度遍历树的节点,尽可能深的搜索树的分支。 那么深度遍历有重要的三种方法。这三种方式常被用于访问树的节点,它们之间的不同在于访问每个节点的次序不同。这三种遍历分别叫做先序遍历(preorder_t
阅读全文
摘要:一、二叉树 二叉树的基本概念 二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。 两种特殊的二叉树 满二叉树(Full Binary Tree) 一棵满二叉树就是高度为k,且拥有(2^k)-1个节点的二叉树,一棵满
阅读全文
摘要:一、二分查找 二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。 二分查找操作的数据集是一个有序的数据集。开始时,先找出有序集合中间的那个元素。如果此元素比要查找的元素大,就接着在较小的
阅读全文
摘要:一、归并排序 归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为2-路归并。 所谓“分”,指的是将一个
阅读全文
摘要:一、泛型递归 递归 Recursion: 又译为递回,在数学与计算机科学中,是指在函数的定义中使用函数自身的方法。 递归一词还较为常用于描述以自相似方法重复事物的过程。 在数学和计算机科学中,递归指由一种(或多种)简单的基本情况定义的一类对象或方法,并规定其他所有情况都能被还原为其基本情况。 斐波那
阅读全文
摘要:一、快速排序 快速排序(英语:Quicksort),又称划分交换排序(partition-exchange sort),通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整
阅读全文
摘要:一、插入排序 插入排序(英语:Insertion Sort)是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。 算法描述 一般来说
阅读全文
摘要:一、冒泡排序 冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。 算法描述 比较相邻的元素。如果
阅读全文
摘要:一、双端队列 双端队列 双端队列(deque,全名double-ended queue),是一种具有队列和栈的性质的数据结构。 双端队列中的元素可以从两端弹出,其限定插入和删除操作在表的两端进行。双端队列可以在队列任意一端入队和出队。 双端队列(Deque),是一种类似于队列的元素的有序集合。它拥有
阅读全文
摘要:一、栈 栈(stack),有些地方称为堆栈,但是不能叫堆,是一种容器,可存入数据元素、访问元素、删除元素,它的特点在于只能允许在容器的一端(称为栈顶端指标,英语:top)进行加入数据(英语:push)和输出数据(英语:pop)的运算。 没有了位置概念,保证任何时候可以访问、删除的元素都是此前最后存入
阅读全文
摘要:一、leetcode 283. Move Zeroes 题目: 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 示例: 输入: [0,1,0,3,12] 输出: [1,3,12,0,0] 说明: 必须在原数组上操作,不能拷贝额外的数组。 尽量减少操作次
阅读全文
摘要:一、python中实现链表(二) python中实现链表(一)见https://www.cnblogs.com/Nicholas0707/p/12730944.html 单链表的实现 0、定义节点 class Node: """单链表的结点""" def __init__(self,item): #
阅读全文
摘要:零、数据结构可视化网站 数据结构比较难于理解,自己画图又太慢,可以找一些数据结构可视化的网站帮助学习。 可视化的交互模式介绍数据结构和算法,非常有利于理解。 Data structure visualizations http://www.cs.usfca.edu/~galles/visualiza
阅读全文
摘要:一、安装配置vscode与python使用环境 下载地址:官网https://code.visualstudio.com/ 安装vscode: 一路next安装 配置VScode 安装python插件。 1、打开VScode,按下快捷键Ctrl+Shift+X,进入插件管理页面。 2、在搜索栏输入p
阅读全文
摘要:一、什么是数据结构?什么是算法? 什么是数据结构? Sartaj Sahni在他的《数据结构、算法与应用》一书中称:“数据结构是数据对象,以及存在于该对象的实例合组成实例的数据元素之间的各种联系。这些联系可以通过定义相关的函数来给出。”他将数据对象(data object)定义为“一个数据对象是实例
阅读全文