class Tree{
int val;
Tree left;
Tree right;
}
//判断tree2是不是tree1的子结构
public class TreeKid {
public static boolean HasSubTree(Tree tree1,Tree tree2){
boolean result=false;
if(tree1!=null&&tree2!=null){
if(tree1.val==tree2.val){
result=DoesTree1HasTree2(tree1,tree2);
}
if(!result){
result=HasSubTree(tree1.left,tree2);
}
if(!result){
result=HasSubTree(tree1.right,tree2);
}
}
return result;
}
public static boolean DoesTree1HasTree2(Tree tree1,Tree tree2){
if(tree2==null){
return true;
}
if(tree1==null){
return false;
}
if(tree1.val!=tree2.val){
return false;
}
return DoesTree1HasTree2(tree1.left,tree2.left)&&DoesTree1HasTree2(tree1.right,tree2.right);
}
int val;
Tree left;
Tree right;
}
//判断tree2是不是tree1的子结构
public class TreeKid {
public static boolean HasSubTree(Tree tree1,Tree tree2){
boolean result=false;
if(tree1!=null&&tree2!=null){
if(tree1.val==tree2.val){
result=DoesTree1HasTree2(tree1,tree2);
}
if(!result){
result=HasSubTree(tree1.left,tree2);
}
if(!result){
result=HasSubTree(tree1.right,tree2);
}
}
return result;
}
public static boolean DoesTree1HasTree2(Tree tree1,Tree tree2){
if(tree2==null){
return true;
}
if(tree1==null){
return false;
}
if(tree1.val!=tree2.val){
return false;
}
return DoesTree1HasTree2(tree1.left,tree2.left)&&DoesTree1HasTree2(tree1.right,tree2.right);
}