
数据结构和算法
那些年的代码
Java工作者
展开
-
面试题:兔子搬运萝卜
一只兔子旁边有100根萝卜, 兔子想把它们搬回家, 离家50米, 一次最多能搬运50根, 每走一米吃一根, 问:兔子最多能搬运多少根萝卜回家。 答:16根 问题分析: 兔子如果只取一次到家, 他是不可能再回去取剩下的, 所以必须中途返回取, 但是中途返回取消耗的代价是直接一次弄回家的3倍, 故思路应该是中途回去取, 然后一次性取回家。 每次从萝卜堆背多少根呢? 如果背的少返回的...原创 2019-12-26 17:49:33 · 685 阅读 · 0 评论 -
【图解数据结构】 二叉树遍历
二叉树遍历原理 二叉树的遍历是指从根结点出发,按照某种次序依次访问二叉树中所有结点,使得每个结点被访问一次且仅被访问一次。 为什么研究二叉树的遍历? 因为计算机只会处理线性序列,而我们研究遍历,就是把树中的结点变成某种意义的线性序列,这给程序的实现带来了好处。 二叉树的创建 遍历二叉树之前,首先我们要有一个二叉树。要创建一个如下图的二叉树,就要先进行二叉树的扩展,也就是将二叉树每个结...原创 2019-07-31 15:41:53 · 747 阅读 · 0 评论 -
关于二叉树的前序、中序、后序三种遍历
原 关于二叉树的前序、中序、后序三种遍历 2018年05月07日 12:25:02翟光小朋友阅读数 151393 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.youkuaiyun.com/qq_33243189/article/details/80222629 二叉树遍历分为三种:前序、中序、后序,其中序遍历最为重要。为啥叫这个名字?是根据根节点的顺序命名的。...原创 2019-07-31 15:45:04 · 154 阅读 · 0 评论 -
二叉树的四种遍历方法笔记
二叉树的遍历(traversing binary tree)是指从根结点出发,按照某种次序依次访问二叉树中所有的结点,使得每个结点被访问依次且仅被访问一次。 二叉树的遍历(traversing binary tree)是指从根结点出发,按照某种次序依次访问二叉树中所有的结点,使得每个结点被访问依次且仅被访问一次。 前序 中 左 右 中序 ...原创 2019-07-31 15:47:15 · 206 阅读 · 0 评论 -
二叉树的三种访问方式
先序遍历 按照根节点->左子树->右子树的顺序访问二叉树 先序遍历: (1)访问根节点; (2)采用先序递归遍历左子树; (3)采用先序递归遍历右子树; (注:每个节点的分支都遵循上述的访问顺序,体现“递归调用”) 先序遍历结果:A BDFE CGHI 思维过程: (1)先访问根节点A, (2)A分为左右两个子树,因为是递归调用,所以左子树也遵循“先根节点-再左-再右”的顺序...原创 2019-07-31 15:47:54 · 982 阅读 · 0 评论 -
为什么说快速排序是性能最好的排序算法?
刚刚学习了排序这一章,看到了书中最后的一个总结表: 心想从表上来看,堆排序不该是最好的排序算法么?不管最好、最坏还是平均情况,时间复杂度都是O(nlogn),而且还不像快排和归并排序那样占空间,为什么说快速排序是最好的算法呢? 其实经过实验,会发现相同的数据规模,快速排序比堆排序的效率高很多,并且随着数据规模的扩大,二者的差距不断扩大,快速排序的优势越来越明显。快速排序的时间复杂度近似线性...原创 2019-07-31 17:06:47 · 2909 阅读 · 0 评论 -
四种常见的数组排序方法
1.冒泡排序法:将数组中的相邻两个元素进行比较,将比较大(较小)的数通过两两比较移动到数组末尾(开始),执行一遍内层循环,确定一个最大(最小)的数,外层循环从数组末尾(开始)遍历到开始(末尾). 冒泡排序 2.选择排序法:将要排序的数组分成两部分,一部分是从大到小已经排好序的,一部分是无序的,从无序的部分取出最小的放到已经排序的最后面。 选择排序 3.插入排序法:将要排序的...原创 2019-07-31 17:11:43 · 4913 阅读 · 1 评论