- 博客(3)
- 收藏
- 关注
原创 二叉树的创建、递归遍历与非递归遍历(C语言)
二叉树的创建要注意使用结构体指针的指针,这样才能保证使用时可以对内存中的对应位置进行修改。创建时使用到了递归。其中先序遍历与后序遍历之间存在关系(注意观察代码),后序遍历的相反顺序是将先序遍历调整入栈顺序得到的。这里使用的是孩子兄弟关系的二叉树,其中FirstChild为左孩子,NextSibling为右孩子。递归遍历的核心是访问数据时的顺序,其决定了遍历类型。非递归遍历主要使用了栈作为递归的替代,较为复杂一点。1.头文件与二叉树的节点。5.二叉树的非递归遍历。4.二叉树的递归遍历。
2023-01-24 16:11:34
583
原创 KMP算法(C语言)
KMP算法的一大难点,求出next数组,由此来优化模板串中会出现相同子串的情况,极大优化了时间复杂度。对于next数组的求法,主要需要弄懂 j = next[ j ] 的作用,这里是起到回溯。对于next数组的求法,以下使用了很短的代码,却实现复杂的操作。这里是KMP算法最难理解的部分,这里建议使用图解来辅助理解。对于next数组代码的理解可以参考这位大佬分享(建议去看B站。定义了一个串的数据类型(按数据结构的话来说。我这里对next的理解便是:模板串的回溯接口。(对于初步理解,主要可以参考。
2023-01-12 23:44:13
128
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人