剑指 Offer 26. 树的子结构
输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构)
B是A的子结构, 即 A中有出现和B相同的结构和节点值。
递归:辅助函数;
先判断其中一个树是否为空,为空直接false
否则进入递归,
1、两个·树直接进入辅助函数递归,判断两个树直接相同
2、判断左右子树是否与另一个树相同,进入rec辅助递归判断
/**
* 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 rec(A,B)||isSubStructure(A.left,B)||isSubStructure(A.right,B);
}
public boolean rec(TreeNode A,TreeNode B){
if(B==null){
return true;
}
if(A==null||A.val!=B.val){
return false;
}
return rec(A.left,B.left)&&rec(A.right,B.right);
}
}