数据结构
我是谁,我在哪?去什么地方?
这个作者很懒,什么都没留下…
展开
-
数据结构--KMP算法
对于KMP算法首先要去创建部分匹配表 此处以str2 = 'ABCDABD' 去匹配 str1 = ’BBC ABCDAB ABCDABCDABDE‘ 匹配方式: 如果是暴力匹配的话,当空格和D 不匹配的时候,下面的字符串会 向后移一位, 如果是采用kmp算法的话,会直接移动4位。这个地方是采用一个KMP算法的移动公式: 移动位数 = 匹配的字符数 - 对应的部分匹配值 如上面的的例子,只有的空格和D 不匹配,前面ABCDAB是匹配的,匹配的长度为6,通过查表,ABCDAB的...原创 2020-05-31 13:04:29 · 163 阅读 · 0 评论 -
数据结构-二叉排序树--平衡二叉树的两次旋转图解
一:判断是左旋转还是右旋转的条件 1.左子树的高度 > 右子树的高数 ===========> 进行右旋转 2.右子树的高度 > 左子树的高度 ============>进行左旋转 做旋转和右旋转的核心代码如下,图解可以参考下面的两次旋转,原理都是一样。 //左旋转 public void leftRotate() { //创建新的节点,值等于当前根节点的值 Node3 newNode = new Node3(value); //把新节点的左子树设置当...原创 2020-05-25 16:42:25 · 623 阅读 · 0 评论 -
数据结构-哈夫曼树的创建
总体流程如下: 1.获取一个无需的数组 2.将数组放入一个容器中 3.然后将容器排序成一个有序的数组 4.然后再从有序的数组中取出 第一个 和 第二个 元素分别为左节点和右结点 进行相加的操作得到父节点 5.然后父节点将左节点和右结点进行关联 6.再从数组中删除第一个元素和 第二个元素,同时将计算得到的父节点放入数组中 7.将得到的数组进行再一次的排序,得到一个新的有序数组 代码如下: package com.mute.tree; import java.util.ArrayLi...原创 2020-05-22 11:43:51 · 199 阅读 · 0 评论