题目描述:
代码如下:
/**
* 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) {
//任意节点为空,结果为false
if(A==null||B==null){
return false;
}
//递归查找
return dfs(A, B)||isSubStructure(A.left, B)||isSubStructure(A.right, B);
}
//该dfs函数是用来判断B是否为A的分支
boolean dfs(TreeNode A,TreeNode B){
//若B先遍历完了,则B是A的分支
if(B==null){
return true;
}
//若A先遍历完或者他们之间结点值不相等,则返回false
if(A==null||A.val!=B.val){
return false;
}
//继续比较下去
return dfs(A.left, B.left)&&dfs(A.right, B.right);
}
}