摘要:
广度优先,则是用的队列,将每一层的节点先存入队列中去,后依次取出队列中的节点,显示与当前节点存在边,但是未被访问过的节点,也就是下一层与之相联系的节点,再将这些节点存入队列。经过层层迭代,就可以完全遍历 整个图。 源码: 测试程序: 测试结果: 阅读全文
摘要:
这里用深度优先遍历存在矩阵里面的图。 深度优先利用的是栈的FIFO特性。为此遍历到底后,可以找到最相邻的节点继续遍历。实现深度优先,还需要在节点加上一个访问标识,来确定该节点是否已经被访问过了。 源码: 测试程序: 测试结果: 阅读全文
摘要:
邻接矩阵实现图,是用一个矩阵,把矩阵下标作为一个顶点,如果顶点与顶点之间有边。那么在矩阵对应的点上把值设为 1 。(默认是0) 测试程序: 测试结果: 阅读全文
摘要:
邻接表实现图,实际上是在一个数组里面存放链表,链表存放的是连接当前节点的其他节点。 测试程序: 测试结果: 阅读全文
摘要:
堆分为大顶堆,和小顶堆。 什么是堆? 堆可以看成是一棵二叉树,二叉树的元素是一个数组不断的从左到右轮训放置。如果是大顶堆,则大的数放上面一层,小的数放下面一层。上一层的数,一定大于下一层的数。小顶堆则相反。 那么,如何实现一个大顶堆?这里我用一个链表来实现。 实现堆很简单,只要牢记他的原理就行了。 阅读全文
摘要:
红黑树是一种自动平衡的二叉查找树,因为存在红黑规则,所以有效的防止了二叉树退化成了链表,且查找和删除的速度都很快,时间复杂度为log(n)。 什么是红黑规则? 1.根节点必须是黑色的。 2.节点颜色要么是红要么是黑。 3.树的每一个分叉存在相同黑色节点。 4.不允许存在两个连续的红色节点。 为不断适 阅读全文