![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 55
一水茶缘YY
前端小工程师,全栈去实践
展开
-
算法总结——八皇后问题(三种解法)
目录(?)[+]问题描述解题思路一参考程序一解题思路二参考程序二解题思路三参考程序三实现中常见的问题问题描述会下国际象棋的人都很清楚:皇后可以在横、竖、斜线上不限步数地吃掉其他棋子。如何将8个皇后放在棋盘上(有8 * 8个方格),使它们谁也不能被吃掉!这就是著名的八皇后问题。 对于某个满足要求的8皇后的摆放方法,定义一个皇后串a与之对应,即a=b1b2…b8,其中bi为相应摆法中第i行皇后所处转载 2017-07-19 14:11:36 · 71289 阅读 · 2 评论 -
二叉树的建立和三种遍历的递归方式
二叉树的每个结点至多只有二棵子树(不存在度大于2的结点),二叉树的子树有左右之分,次序不能颠倒。二叉树的第i层至多有2^{i-1}个结点;深度为k的二叉树至多有2^k-1个结点;对任何一棵二叉树T,如果其终端结点数为n_0,度为2的结点数为n_2,则n_0=n_2+1。一棵深度为k,且有2^k-1个节点称之为满二叉树;深度为k,有n个节点的二叉树,当且仅当其每一个节点都与深度为k的满二叉树中,序号为原创 2017-07-24 11:42:48 · 479 阅读 · 0 评论 -
二叉树三种遍历的非递归思路(JAVASCRIPT)
二叉树在图论中是这样定义的:二叉树是一个连通的无环图,并且每一个顶点的度不大于3。有根二叉树还要满足根结点的度不大于2。有了根结点之后,每个顶点定义了唯一的父结点,和最多2个子结点。然而,没有足够的信息来区分左结点和右结点。如果不考虑连通性,允许图中有多个连通分量,这样的结构叫做森林。这里,我使用javascript来写二叉树遍历的三种非递归方式,因为楼主学的是javascript,对于C,JAVA原创 2017-07-27 15:38:40 · 1950 阅读 · 0 评论 -
堆排序的JS实现
JS实现堆排序 堆排序 堆的定义: 堆是满足下列性质的数列{R1,R2,R3,…,Rn}: 小顶堆:Ri <= R2i, Ri <= R2i 大顶堆:Ri >= R2i, Ri >= R2i堆排序是在树形选择排序的基础上进一步进行优化 简单来说:就是假如将此序列看成一棵完全二叉树,要使这个无序列表变成堆,则小于等于n/2转载 2017-07-28 15:03:12 · 340 阅读 · 0 评论 -
图的深度优先遍历(DFS)和广度优先遍历(BFS)
概述图的遍历是指从图中的任一顶点出发,对图中的所有顶点访问一次且只访问一次。图的遍历操作和树的遍历操作功能相似。图的遍历是图的一种基本操作,图的其它算法如求解图的连通性问题,拓扑排序,求关键路径等都是建立在遍历算法的基础之上。由于图结构本身的复杂性,所以图的遍历操作也较复杂,主要表现在以下四个方面:① 在图结构中,没有一个“自然”的首结点,图中任意一个顶点都可作为第一个被访问的结点。② 在非连转载 2017-07-28 15:22:25 · 4438 阅读 · 0 评论