题目描述
输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)
/**
public class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}
*/
public class Solution{
public static boolean HasSubtree(TreeNode tree1,TreeNode tree2){
boolean result=false;
if(tree1!=null && tree2!=null){
if(tree1.val == tree2.val){
result=doesTree1HaveTree2(tree1,tree2);
}
if(!result){
result = HasSubtree(tree1.left,tree2);
}
if(!result){
result = HasSubtree(tree1.right,tree2);
}
}
return result;
}
public static boolean doesTree1HaveTree2(TreeNode tree1,TreeNode tree2){
if(tree2==null){
return true;
}
if(tree1==null){
return false;
}
if(tree1.val!=tree2.val){
return false;
}
return doesTree1HaveTree2(tree1.left,tree2.left)&& doesTree1HaveTree2(tree1.right,tree2.right);
}
}
非常想吐,写的时候出了很多错,后来对着别人的题解看半天发现各种拼写错,心好累