1.
public class Solution {
public boolean HasSubtree(TreeNode root1,TreeNode root2) {
if(root1==null || root2==null) {
return false;
}
return HasSubtreeCore(root1,root2) || HasSubtree(root1.left, root2) || HasSubtree(root1.right, root2);
}
public boolean HasSubtreeCore(TreeNode root1,TreeNode root2) {
if(root2==null){
return true;
}
if(root1==null){
return false;
}
if(root1.val!=root2.val){
return false;
}
return HasSubtreeCore(root1.left,root2.left) && HasSubtreeCore(root1.right,root2.right);
}
}
或者
public class T26 {
public static void main(String[] args) {
TreeNode t1=new TreeNode(1);TreeNode t2=new TreeNode(2);TreeNode t3=new TreeNode(3);
TreeNode t10=new TreeNode(10);
TreeNode t4=new TreeNode(1);TreeNode t5=new TreeNode(2);
t1.left=t2;t1.right=t3;t2.left=t10;
t4.left=t5;
System.out.println(HasSubtree(t1,t4));
}
public static boolean HasSubtree(TreeNode root1,TreeNode root2) {
boolean result = false;
if(root1!=null && root2!=null) {
if (root1.val == root2.val) {
result = HasSubtreeCore(root1,root2);
}
if(!result){
result = HasSubtree(root1.left, root2) || HasSubtree(root1.right, root2);
}
}
return result;
}
public static boolean HasSubtreeCore(TreeNode root1,TreeNode root2) {
if(root2==null){
return true;
}
if(root1==null){
return false;
}
if(root1.val!=root2.val){
return false;
}
return HasSubtreeCore(root1.left,root2.left) && HasSubtreeCore(root1.right,root2.right);
}
}