https://www.nowcoder.com/practice/6e196c44c7004d15b1610b9afca8bd88?tpId=13
题目描述
输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)
输入
返回值
true
/*struct TreeNode {int val;struct TreeNode *left;struct TreeNode *right;TreeNode(int x) :val(x), left(NULL), right(NULL) {}};*/class Solution {public:bool HasSubtree(TreeNode *pRoot1, TreeNode *pRoot2) {if (pRoot1 == nullptr||pRoot2== nullptr) {return false;}if (pRoot1 == pRoot2) {return true;}bool res = false;if (pRoot1->val == pRoot2->val) {res = isSubTree(pRoot1, pRoot2);}if (res) {return true;}return isSubTree(pRoot1->left, pRoot2) || isSubTree(pRoot1->right, pRoot2);};bool isSubTree(TreeNode *pRoot1, TreeNode *pRoot2) {if (pRoot1 == pRoot2) {return true;}if (pRoot2 == nullptr) {return true;}if (pRoot1 == nullptr) {return false;}if (pRoot1->val != pRoot2->val) {return false;} else {return isSubTree(pRoot1->left, pRoot2->left) && isSubTree(pRoot1->right, pRoot2->right);}}};
