这道题主要考察对树的理解以及递归算法。
具体分析参考剑指offer26.
时间和内存消耗以及源代码如下:
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
bool isTotolEqual(struct TreeNode* A, struct TreeNode* B)
{
if (B == NULL)
{
return true;
}
if (A == NULL)
{
return false;
}
if (A->val == B->val)
{
return isTotolEqual(A->left, B->left)
&& isTotolEqual(A->right, B->right);
}
return false;
}
bool isSubStructure(struct TreeNode* A, struct TreeNode* B){
if (A == NULL || B == NULL)
{
return false;
}
bool result = false;
if (A->val == B->val)
{
result = isTotolEqual(A, B);
}
if (!result)
{
result = isSubStructure(A->left, B) || isSubStructure(A->right, B);
}
return result;
}