题解 | #树的子结构#

树的子结构

http://www.nowcoder.com/practice/6e196c44c7004d15b1610b9afca8bd88

双重递归,第一层判断是否为子树,如果根节点值相等,进入第二层判断树是否相等

/*
struct TreeNode {
	int val;
	struct TreeNode *left;
	struct TreeNode *right;
	TreeNode(int x) :
			val(x), left(NULL), right(NULL) {
	}
};*/
class Solution {
public:
    bool IsSame(TreeNode* p1,TreeNode* p2){
        if(!p1 && !p2) return true;
        if(!p1) return false;
        if(!p2) return true;
        if(p1->val==p2->val){
            return IsSame(p1->left, p2->left) && IsSame(p1->right, p2->right);
        }else return false;
    }
    bool HasSubtree(TreeNode* pRoot1, TreeNode* pRoot2) {
        if(!pRoot1 || !pRoot2) return false;
        if(pRoot1->val==pRoot2->val){
            if(IsSame(pRoot1, pRoot2)) return true;
        }
        return HasSubtree(pRoot1->left, pRoot2) || HasSubtree(pRoot1->right, pRoot2);
    }
};
全部评论

相关推荐

02-04 17:01
南昌大学 Java
牛客96763241...:拿插件直接投就完了,这玩意看运气的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务