子树:子树的意思是只要包含了一个结点,就得包含这个结点下的所有节点.
子结构:子结构的意思是包含了一个结点,可以只取左子树或者右子树,或者都不取。
一、代码
public boolean HasSubtree(TreeNode root1,TreeNode root2) {
boolean result = false;
if(root1!=null&&root2!=null)
{
if(root1.val==root2.val)
{
result = HasSubtree01(root1,root2);
}
if(!result)result = HasSubtree(root1.left,root2);
if(!result)result = HasSubtree(root1.right,root2);
}
return result;
}
//当根节点相同的时候才调用此函数来递归
public static boolean HasSubtree01(TreeNode root1,TreeNode root2) {
if(root1==null&&root2!=null)return false;
if(root2==null)return true;
if(root1.val!=root2.val)return false;
return HasSubtree01(root1.left,root2.left)&&HasSubtree01(root1.right,root2.right);
}