算法
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 · 150 阅读 · 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 · 159 阅读 · 0 评论