• 剑指offer:树的子结构


    题目描述:

    输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)

    解题思路:

    同样考虑用递归来做。

    利用两个递归函数,一个用于判断两棵树树否相等,另一个递归取A的子树与B比较。

    包含几种情况:

      A为空或B为空,false;

      A与B相等,true;

      B为A的子结构,true;

      B不为A的子结构,false.

    代码:

    /*
    struct TreeNode {
        int val;
        struct TreeNode *left;
        struct TreeNode *right;
        TreeNode(int x) :
                val(x), left(NULL), right(NULL) {
        }
    };*/
    class Solution {
    public:
        bool equal(TreeNode* t1, TreeNode* t2)
        {
            if(t1==nullptr && t2==nullptr)
                return true;
            else if(t1==nullptr)
                return false;
            else if(t2==nullptr)
                return true;
            else
            {
                if(t1->val==t2->val)
                {
                    return (equal(t1->left, t2->left) && equal(t1->right, t2->right));
                }
                else
                    return false;
            }
        }
        bool HasSubtree(TreeNode* pRoot1, TreeNode* pRoot2)
        {
            if(pRoot2 == nullptr)
                return false;
            if(pRoot1 == nullptr)
                return false;
            if(pRoot1->val != pRoot2->val)
            {
                return (HasSubtree(pRoot1->left, pRoot2) || HasSubtree(pRoot1->right, pRoot2));
            }
            else
            {
                if(equal(pRoot1->left, pRoot2->left)&& equal(pRoot1->right, pRoot2->right))
                    return true;
                else
                {
                    if(HasSubtree(pRoot1->left, pRoot2) || HasSubtree(pRoot1->right, pRoot2))
                        return true;
                    else
                        return false;
                }
            }
        }
    };
  • 相关阅读:
    MyBatis:2
    MyBatis:1
    synchronized锁普通方法和锁静态方法
    打印倒直角三角形
    迭代器模拟for循环
    Python迭代对象与迭代器
    ffmpeg用法(心得体会还有你见过的用法)
    ffmpeg命令选项解释
    ffmpeg一些filter用法、以及一些功能命令
    FFMPEG 实现 YUV,RGB各种图像原始数据之间的转换(swscale)
  • 原文地址:https://www.cnblogs.com/LJ-LJ/p/10606263.html
Copyright © 2020-2023  润新知