题解 | #树的子结构#

树的子结构

http://www.nowcoder.com/practice/6e196c44c7004d15b1610b9afca8bd88

直接两种递归会超时,还是改成了先判断一下下一层是否满足,不然一直递归下去了

class Solution {
public:
    bool backtracking(TreeNode* p1, TreeNode* p2){
        if(!p2) return true;
        if(!p1) return false;
        if(p1->val==p2->val){
            if((p1->left&&p2->left&&p1->left->val!=p2->left->val)||(p1->right&&p2->right&&p1->right->val!=p2->right->val)){
                return false;
            } 
            return backtracking(p1->left,p2->left)&&backtracking(p1->right,p2->right);
        }
        return false;
    }
    bool HasSubtree(TreeNode* pRoot1, TreeNode* pRoot2) {
        if(!pRoot2||!pRoot1) return false;
        if(!backtracking(pRoot1, pRoot2)){

            //bool left=HasSubtree(pRoot1->left,pRoot2);
            //bool right=HasSubtree(pRoot1->right,pRoot2);
            return HasSubtree(pRoot1->left,pRoot2)||HasSubtree(pRoot1->right,pRoot2);
        }
        return true;
    }
};
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务