判断t1树中是否有与t2树拓扑结构
判断t1树中是否有与t2树拓扑结构完全相同的子树
http://www.nowcoder.com/questionTerminal/4eaccec5ee8f4fe8a4309463b807a542
思路:后续遍历两个树,对结果res1和res2进行查找:res2是否在res1中。
程序能通过,有不足之处欢迎指正。
/** * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */ class Solution { public: /** * * @param root1 TreeNode类 * @param root2 TreeNode类 * @return bool布尔型 */ bool isContains(TreeNode* root1, TreeNode* root2) { if(root1==nullptr || root2==nullptr) return false; vector<int> res1,res2; //后序遍历 pastorder(res1,root1);pastorder(res2,root2); int count=0; //查找res1中是否有res2 for(int i=0,j=0;i<res1.size();i++) { if(res1[i]==res2[j]) {count++;j++;} else {count=0;j=0;} if(count==res2.size()) return true; } return false; } void pastorder(vector<int> &res,TreeNode* root) { if(root==nullptr) {return;} pastorder(res, root->left); pastorder(res, root->right); res.push_back(root->val); } };