数据结构与算法
文章平均质量分 96
XiaoSong_Aha
Show me the code!
展开
-
数据结构之AVL树(平衡二叉树)的理解
一.右旋和左旋1.右旋(有右孩子则抛弃右孩子)<1>平平无奇的右旋上图就是一个平平无奇的右旋,简单来说就是:断开D和B的联系 将B的右子树指向D,即D作为B的右子树(因为D比B大) 用B代替原先D的位置 <2>鸠占鹊巢的右旋(B本身有右子树)若B本身有右子树,如:此时B本身是有右子树的,对以D为结点的此最小平衡树进行右旋:将D的左子树指向B的右子树(B和D断开,把B的右子树作为D的左子树) 将B的右子树指向D(B和C断开,把.原创 2021-05-19 18:38:56 · 1493 阅读 · 3 评论 -
字符串匹配之KMP算法
暴力匹配方法假设现在我们面临这样一个问题:有一个文本串S,和一个模式串P,现在要查找P在S中的位置,怎么查找呢?如果用暴力匹配的思路,并假设现在文本串S匹配到 i 位置,模式串P匹配到 j 位置,则有:如果当前字符匹配成功(即S[i] == P[j]),则i++,j++,继续匹配下一个字符; 如果失配(即S[i] ! = P[j]),令i = i - (j - 1),j = 0。相当于每次匹配失败时,i 回溯,j 被置为0。代码如下:int ViolentMatch(char* s原创 2021-04-13 16:16:03 · 549 阅读 · 0 评论