26 树的子结构
判断 A 树是不是 B 树的子结构。由于 null 不是任何树的子结构,需要先判断 A 是不是 null ,然后在递归判断 B 树的节点,如果与 A 树结果相同,同时递归两个树,如果不同,尝试 B 数的左右节点递归。
/**
public class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}
*/
public class Solution {
public boolean HasSubtree(TreeNode root1,TreeNode root2) {
if(root2==null) return false;
return hasSubTreeCore(root1, root2);
}
private boolean hasSubTreeCore(TreeNode root1,TreeNode root2) {
if(root2==null) return true;
if(root1==null) return false;
if(root1.val==root2.val){
if( hasSubTreeCore(root1.left, root2.left) && hasSubTreeCore(root1.right, root2.right)){
return true;
}
}
return hasSubTreeCore(root1.left, root2) || hasSubTreeCore(root1.right, root2);
}
}