0
点赞
收藏
分享

微信扫一扫

[[EVD]] - 剑指 Offer 26. 树的子结构

千妈小语 2022-03-30 阅读 29

题目分析:[[EVD]] - 剑指 Offer 26. 树的子结构icon-default.png?t=M276https://leetcode-cn.com/problems/shu-de-zi-jie-gou-lcof/

简单描述:

  • 二叉树A和B,判断B是否A的子树

限制🚫

  • 0 <= 节点个数 <= 10000
  • 空树不是任意一个树的子结构

示例:

解题思路:

思路:

  • #DFS 先序遍历
    • 在A树中找到B树的root,同时开始DFS先序遍历判断是否相同

效率:

  • 时间复杂度O(nm)
  • 空间复杂度O(n)

代码:

class Solution
{
private:
    bool dfs(TreeNode *A, TreeNode *B)
    {
        if (B == NULL)  //判断终止条件,子树B遍历完成
            return true;
        if (A == NULL)
            return false;
        return A->val == B->val && dfs(A->left, B->left) && dfs(A->right, B->right);
    }
public:
    /*在A树中找到B树的root,同时开始DFS先序遍历*/
    bool isSubStructure(TreeNode *A, TreeNode *B)
    {
        if (A == NULL || B == NULL)
            return false;
        return dfs(A, B) || isSubStructure(A->left, B) || isSubStructure(A->right, B);
    }
};
举报

相关推荐

0 条评论