572. Subtree of Another Tree
Given two non-empty binary trees s and t, check whether tree t has exactly the same structure and node values with a subtree of s. A subtree of s is a tree consists of a node in s and all of this node’s descendants. The tree s could also be considered as a subtree of itself.
Example 1:
Given tree s:
3
/ \
4 5
/ \
1 2
Given tree t:
4
/ \
1 2
Return true, because t has the same structure and node values with a subtree of s.
Example 2:
Given tree s:
3
/ \
4 5
/ \
1 2
/
0
Given tree t:
4
/ \
1 2
Return false.
Approach
题目大意:给你树t和树s,问你是否s是t的子树
思路方法:枚举每个结点的结构是否与s相同
Code
class Solution {
public:
bool isSubtree(TreeNode* s, TreeNode* t) {
return traval(s, t);
}
bool equal(TreeNode* s,TreeNode* t){
if (s == nullptr&&t == nullptr)return true;
if (s == nullptr&&t != nullptr)return false;
if (s != nullptr&&t == nullptr)return false;
return (s->val == t->val) && equal(s->left, t->left) && equal(s->right, t->right);
}
bool traval(TreeNode* s, TreeNode* t) {
return s != nullptr && (equal(s, t) || traval(s->left,t)||traval(s->right,t));
}