0%

【树】判断数A为数B的子结构

题目描述

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

解题思路

递归

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
bool HasSubtree(TreeNode* pRoot1, TreeNode* pRoot2)
{
bool result=false;
if(pRoot1==nullptr||pRoot2==nullptr)
return false;
if(pRoot1->val==pRoot2->val)
result=childTree(pRoot1,pRoot2);
if(result==false)
result=HasSubtree(pRoot1->left,pRoot2);
if(result==false)
result=HasSubtree(pRoot1->right,pRoot2);
return result;
}

bool childTree(TreeNode* pRoot1, TreeNode* pRoot2)
{
if(pRoot2==nullptr) return true;
if(pRoot1==nullptr) return false;
bool result=false;
if(pRoot1->val!=pRoot2->val)
return false;
else
result=childTree(pRoot1->left,pRoot2->left)&&childTree(pRoot1->right,pRoot2->right);
return result;
}