题解 | #判断t1树中是否有与t2树拓扑结构完全相同的子树#

判断t1树中是否有与t2树拓扑结构完全相同的子树

http://www.nowcoder.com/practice/4eaccec5ee8f4fe8a4309463b807a542

/*
描述
给定彼此独立的两棵二叉树,判断 t1 树是否有与 t2 树拓扑结构完全相同的子树。
设 t1 树的边集为 E1,t2 树的边集为 E2,若 E2 等于 E1 ,则表示 t1 树和t2 树的拓扑结构完全相同。
示例1
输入:
{1,2,3,4,5,6,7,#,8,9},{2,4,5,#,8,9}
复制
返回值:
true
复制
备注:
1 \leq n \leq 5000001≤n≤500000
*/

#include<iostream>

using namespace std;

struct TreeNode {
    int val;
    TreeNode* left;
    TreeNode* right;
    TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};

class Solution {
public:
    /**
     *
     * @param root1 TreeNode类
     * @param root2 TreeNode类
     * @return bool布尔型
     */
    bool isContains(TreeNode* root1, TreeNode* root2) {
        // write code here
        if (root2 == NULL) return true;
        if (root1 == NULL) return false;
        return (isSubTree(root1, root2) || isContains(root1->left, root2) || isContains(root1->right, root2));
    }

    bool isSubTree(TreeNode* root1, TreeNode* root2) {
        if (root1 == NULL && root2 == NULL)
            return true;
        if (root1 == NULL || root2 == NULL || (root1->val != root2->val))
            return false;
        return (isSubTree(root1->left, root2->left) && isSubTree(root1->right, root2->right));
    }

};
全部评论

相关推荐

10-09 22:05
666 C++
找到工作就狠狠玩CSGO:报联合国演讲,报电子烟设计与制造
点赞 评论 收藏
分享
10-09 09:39
门头沟学院 C++
HHHHaos:这也太虚了,工资就一半是真的
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务