剑指offer NO.18,输入树A和B,判断B是否是A的子树,用递归实现的,递归驱动函数的边界条件判断不要使用
if(root2==null)
return true;
否则会得出错误的结果,该判断应该在isSub函数中进行,代码如下
package com.zjy.sword2offer;
public class IsSubtree {
public boolean isSubtree(TreeNode root1, TreeNode root2){
boolean issubtree = false;
if(root1!=null && root2!=null)
{
if(root1.val == root2.val)
issubtree = isSub(root1, root2);
if(!false)
issubtree = isSubtree(root1.left,root2);
if(!false)
issubtree = isSubtree(root1.right,root2);
}
return issubtree;
}
public boolean isSub(TreeNode root1, TreeNode root2){
if(root2==null)
return true;
if(root1==null)
return false;
if(root1.val!=root2.val)
return false;
return isSub(root1.left,root2.left)&&isSub(root1.right,root2.right);
}
}