![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
qq_39449585
这个作者很懒,什么都没留下…
展开
-
二叉树遍历算法——Morris算法
Morris算法的时间复杂度是O(n),空间复杂度为O(1) 基本思想是: 1. 找到当前节点的前驱节点,即左节点的最右节点,若为空则指向当前节点,若为当前节点则表明该节点左边以及该节点已经遍历完,并将前驱节点的有指针恢复为空 2. 若当前节点的左节点为空,则直接访问当前节点右节点 前序遍历和中序遍历代码差不多,只是visit位置不同 public void morris_preorder(TreeNode root) { TreeNode node1 = root, node2 = n原创 2020-06-19 14:26:09 · 136 阅读 · 0 评论 -
KMP
KMP算法太好忘了,记录一下 public int kmp(char[] s, char[] p) { if (s == null || p == null || p.length == 0 || s.length < p.length) return -1; // next数组用于当s与p的字符不匹配时,不用将指针i前移,而是将p整体后移 // 即当当前元素不匹配时,应去匹配哪个元素 int[] next = getNext(p); int i = 0,原创 2020-06-16 17:12:13 · 148 阅读 · 0 评论