import org.junit.Test;
public class solution {
@Test
public void testFunc(){
TreeNode root1 = new TreeNode(1);
TreeNode root2 = new TreeNode(2);
TreeNode root3 = new TreeNode(3);
root1.left=root2;
root1.right=root3;
TreeNode root4 =new TreeNode(1);
TreeNode root5 = new TreeNode(2);
TreeNode root6= new TreeNode(3);
root4.left=root5;
root4.right=root6;
boolean flag = isSubTree(root1, root4);
System.out.println("flag: "+flag);
}
//判断二叉树B是不是二叉树A的子结构
public boolean isSubTree(TreeNode aNode, TreeNode bNode){
if(bNode==null || aNode==null){
return false;
}
boolean flag =false;
if (aNode.val==bNode.val) {
flag = hasSubTree2(aNode, bNode);
}
if (!flag) {
flag = isSubTree(aNode.left, bNode);
}
if (!flag) {
flag=isSubTree(aNode.right, bNode);
}
return flag;
}
private boolean hasSubTree2(TreeNode aNode, TreeNode bNode) {
if (bNode==null) {
return true;
}
if (aNode==null) {
return false;
}
if (aNode.val!=bNode.val) {
return false;
}
return hasSubTree2(aNode.left, bNode.left) && hasSubTree2(aNode.right, bNode.right);
}
}