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

全部评论

相关推荐

10-06 12:46
门头沟学院 Java
跨考小白:定时任务启动
点赞 评论 收藏
分享
手撕没做出来是不是一定挂
Chrispp3:不会,写出来也不一定过
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务