LeetCode 剑指 Offer 26. 树的子结构 (递归、递归的终止条件)

树的子结构

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    bool isSubStructure(TreeNode* A, TreeNode* B) {
        if(!B || !A) return false;
        if(check(A,B)) return true;
        if(isSubStructure(A->left,B) || isSubStructure(A->right,B)){
        //这个地方不是去调用 check(A->left,B) check(A->rihgt,B)
            return true;
        }
        return false;
    }
    bool check(TreeNode* a,TreeNode* b){
        if(!b) return true;
        if(!a) return false;
        return a->val==b->val && check(a->left,b->left) 
        && check(a->right,b->right);
    }
};

你可能感兴趣的:(LeetCode,#,LC二叉树)