此次迷宫深度优先遍历寻找路径采用栈结构,每个节点都有固定的行走方向(右下左上),除非一个方向走不通,不然会一条道走到黑. 如果路径存在,打印出行走路径,否则打印出迷宫不存在有效路径. 方向常量定义: public interface Constant { // 右方向 int RIGHT = 0; // 下方向 int DOWN = 1; // 左方向 int LEFT = 2; // 上方向 int UP = 3; } 所用到的栈定义(jdk自带的栈或集合也可以实现此功能) /** * 描述:…
使用一个队列,采用层层扩张的方式,寻找迷宫最优的路径信息,再用一个迷宫节点数组记录行走信息方向常量定义: public interface Constant { // 右方向 int RIGHT = 0; // 下方向 int DOWN = 1; // 左方向 int LEFT = 2; // 上方向 int UP = 3; } 所用到的链式队列定义(jdk自带的队列或集合也可以实现此功能) public class LinkQueue<T> { // 指向头节点(队头) private En…
Arrays.stream(arr).forEach(num -> System.out.println(num));…
import java.util.ArrayDeque; public class BinaryTree { static class TreeNode{ int value; TreeNode left; TreeNode right; public TreeNode(int value){ this.value=value; } } TreeNode root; public BinaryTree(int[] array){ root=makeBinaryTreeByArray(array,…
数据结构可以说是编程的内功心法,掌握好数据结构真的非常重要.目前基本上流行的数据结构都是c和c++版本的,我最近在学习python,尝试着用python实现了二叉树的基本操作.写下一篇博文,总结一下,希望能够对其他好伙伴带来一点借鉴价值~~ 温馨提示:学习算法要先懂思想,后学代码.思想学会才是自己的.背下来代码,容易忘. 代码捉襟见肘,欢迎批评指正 ^.^先谈一下二叉树:二叉树是常用的存储数据的方式.除了根节点之外,每个节点都有一个父节点,最多有两个子节点,左孩子和右孩子对于二叉树有如下操作:…
主要参考资料:数据结构(C语言版)严蔚敏   ,http://blog.chinaunix.net/uid-25324849-id-2182922.html   代码测试通过. package 图的建立与实现; import java.util.*; public class MGraph { final int MAXVEX = 100; final int INFINITY = 65535; int[] vexs = new int[MAXVEX]; //顶点表 int[][] arc =…
到 0 的权是 91 到 2 的权是 31 到 3 的权是 61 到 4 的权是 7 2 到 0 的权是 22 到 3 的权是 5 3 到 0 的权是 33 到 4 的权是 1 4 到 2 的权是 2 0 到 4 的权是 6 遍历思路:线性数组存放着[v0,v1,v2,v3,v4]从0号元素开始 i=0:打印出v0,0入队0出队,去查找v0的邻接表,找到了v4打印出v4,4入队4出队,去查找v4的邻接表,找到了v2打印出v2,2入队2出队,去查找v2的邻接表,找到了v0,v3,因为v0是已访问过…
如果看完本篇博客任有不明白的地方,可以去看一下<大话数据结构>的7.4以及7.5,讲得比较易懂,不过是用C实现 下面内容来自segmentfault 存储结构 要存储一个图,我们知道图既有结点,又有边,对于有权图来说,每条边上还带有权值.常用的图的存储结构主要有以下二种: 邻接矩阵 邻接表 邻接矩阵 我们知道,要表示结点,我们可以用一个一维数组来表示,然而对于结点和结点之间的关系,则无法简单地用一维数组来表示了,我们可以用二维数组来表示,也就是一个矩阵形式的表示方法. 我们假设A是这个二维数组…
在编程生活中,我们总会遇见树性结构,这几天刚好需要对树形结构操作,就记录下自己的操作方式以及过程.现在假设有一颗这样树,(是不是二叉树都没关系,原理都是一样的) 1.广度优先遍历 英文缩写为BFS即Breadth FirstSearch.其过程检验来说是对每一层节点依次访问,访问完一层进入下一层,而且每个节点只能访问一次.对于上面的例子来说,广度优先遍历的 结果是:A,B,C,D,E,F,G,H,I(假设每层节点从左到右访问). 先往队列中插入左节点,再插右节点,这样出队就是先左节点后右节点了.…
遍历 图的遍历,所谓遍历,即是对结点的访问.一个图有那么多个结点,如何遍历这些结点,需要特定策略,一般有两种访问策略: 深度优先遍历 广度优先遍历 深度优先 深度优先遍历,从初始访问结点出发,我们知道初始访问结点可能有多个邻接结点,深度优先遍历的策略就是首先访问第一个邻接结点,然后再以这个被访问的邻接结点作为初始结点,访问它的第一个邻接结点.总结起来可以这样说:每次都在访问完当前结点后首先访问当前结点的第一个邻接结点. 我们从这里可以看到,这样的访问策略是优先往纵向挖掘深入,而不是对一个结点的所…