0.code
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public boolean isSubStructure(TreeNode A, TreeNode B) {
if(B==null||A==null){
return false;
}
return isSubStructureHelp1(A,B);
}
public boolean isSubStructureHelp1(TreeNode A, TreeNode B) {
if(B==null||A==null){
return false;
}
boolean flag = false;
if(A.val==B.val){
flag = isSubStructureHelp2(A.left,B.left)&&isSubStructureHelp2(A.right,B.right);
}
if(!flag){
flag = isSubStructureHelp1(A.left,B)||isSubStructureHelp1(A.right,B);
}
return flag;
}
public boolean isSubStructureHelp2(TreeNode A, TreeNode B) {
if(A==null&&B==null){
return true;
}
if(A==null&&B!=null){
return false;
}
if(A!=null&&B==null){
return true;
}
if(A.val!=B.val){
return false;
}
if(isSubStructureHelp2(A.left,B.left)&&isSubStructureHelp2(A.right,B.right)){
return true;
}
return false;
}
}
网友评论