题目描述
解题思路:需要遍历大树的所有节点,且遇空就返回错误,使用||进行连接,对两个树进行比较,小树可以为空,大树不能为空,两节点必须相等,返回各自的左右子树判断结果。
解题代码:
/**
* 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 (A==null || B==null) {
return false;
}
return dfs(A,B)||isSubStructure(A.left,B) ||isSubStructure(A.right,B);
}
public boolean dfs(TreeNode a, TreeNode b) {//只用来判断ab是否相同
if (b == null){//b可以为空,毕竟是子树
return true;
}
if(a==null||a.val != b.val) {//a不能为空,且a和b的值一定相等
return false;
}
return dfs(a.left,b.left)&&dfs(a.right,b.right);
}
}