https://leetcode.com/problems/subtree-of-another-tree
1. Use recursion:
//28 ms 18.5 MB/*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/class Solution {public:bool isSubtree(TreeNode* s, TreeNode* t) {if(!s) return false;bool isSub = false;bool isSubL = isSubtree(s->left, t);bool isSubR = isSubtree(s->right, t);if(s->val == t->val)isSub = isSameTree(s, t);return isSub || isSubL || isSubR;}private:bool isSameTree(TreeNode* s, TreeNode* t) {if(!s && !t) return true;else if((!s && t) || (s && !t)) return false;bool isSubL = isSameTree(s->left, t->left);bool isSubR = isSameTree(s->right, t->right);if(s->val == t->val)return isSubL && isSubR;elsereturn false;}};
