跳转至

26.树的子结构 (Medium)*

题目描述*

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

B是A的子结构, 即 A中有出现和B相同的结构和节点值。

示例*

给定的树 A:

     3
    / \
   4   5
  / \
 1   2

给定的树 B:

   4 
  /
 1

返回 true,因为 B 与 A 的一个子树拥有相同的结构和节点值。

限制*

0 <= 节点个数 <= 10000

代码*

class Solution {
public:
    bool helper(TreeNode *A, TreeNode *B) {
        if(B == nullptr) {
            return true;
        }
        if(A == nullptr) {
            return false;
        }
        if(A->val != B->val) {
            return false;
        }
        return helper(A->left, B->left) && helper(A->right, B->right);
    }
    bool isSubStructure(TreeNode* A, TreeNode* B) {
        if(A == nullptr || B == nullptr) {
            return false;
        }
        return helper(A, B) || isSubStructure(A->left, B) || isSubStructure(A->right, B);
    }
};

最后更新: July 23, 2022