判断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);
}
}; 
