一道递归/动规易错题的总结
这两天做leetcode发现自己对一个递归/动规的问题容易想错,特此来总结一下 总共3道题 一个是前几天碰见的面试题,给定一个二叉树还有一个给定的数值,让找到这课二叉树是否有一条路径上的值的和刚好等于给定的值(这里的路径只能从父节点到子节点) Leetcode 1367 这道题是相当于上面的变体,给定一个二叉树还有一个链表,判断二叉树上是否有一条路径刚好等于链表上的那条路径。 第三题也是leetcode上的一题,但是忘了哪道了。记得是一个字符串里,需要计算最长满足另外一个字符串的连续子串的问题。 上面的三个问题容易犯一个共同的错误就是递归去做这道题的时候,递归函数容易写成如下(比如以第二题为例): bool isSubPath ( ListNode * head , TreeNode * root ) { if ( head == NULL ) return true ; if ( root == NULL ) return false ; bool res = false ; if ( head - > val == root - > val ) res = isSubPath ( head - > next , root - > left ) || isSubPath ( head - > next , root - > right ) ; if ( res == true )