leetcode 572 另一颗树的子树 (C语言)

  • Post author:
  • Post category:其他


这题严格来说并不算一个简单题,但是想明白后却觉得好像又是一个简单题,这题对于递归的考研是相当到位的,和100题相同的子树很像,但是却又增加了条件,另一颗树是另一颗树的子树。

下面贴出代码:

bool campare(struct TreeNode* root, struct TreeNode* subRoot)
{
    // 如果两个节点为空的话则为true
    if (!root && !subRoot)
        return true;
    
    if (!root || !subRoot)
        return false;

    if (root->val != subRoot->val)
        return false;

    return campare(root->left, subRoot->left) && campare(root->right, subRoot->right);

}


bool isSubtree(struct TreeNode* root, struct TreeNode* subRoot)
{
    if (root == NULL)
    {
        return false;
    }

    // 这一段代码很有意思,前面进入函数递归
    // 后面两个 isSubtree 传入左子树,再次进入campare函数递归
    // 只要有一个为true, 则为true;
    return campare(root, subRoot) || isSubtree(root->left, subRoot) || isSubtree(root->right, subRoot);

}



版权声明:本文为qq_48718265原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。