题解 | #树的子结构#

树的子结构

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

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

递归方法:主要是要考虑好退出条件

1.空树不为任意树的子结构,所以pRoot2空时返回false

2.pRoot1为空时,必定返回false

3.当前节点相等时,递归判断左右子树

4.当前节点不等时,保留完整pRoot2结构,从pRoot1的左右子树中递归寻找

全部评论

相关推荐

只有一个苍穹外卖外加正在看黑马点评,可以找小厂实习吗,还有我的简历有什么大问题吗
Java抽象小篮子:感觉有点熟悉,问题1是学历,2是没实习经历,3是专业技能写得太少太少了(怎么写可以看我置顶帖),4是仅这一个项目找实习不够看。拷打完毕,简历怎么写可以看我置顶帖子
点赞 评论 收藏
分享
点赞 评论 收藏
分享
迟缓的斜杠青年巴比Q了:简历被投过的公司卖出去了,我前两天遇到过更离谱的,打电话来问我有没有意向报班学Java学习,服了,还拿我学校一个学长在他们那报班学了之后干了华为OD当招牌
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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