树的子结构
二叉树的镜像
题目描述
输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)
记录一下, 刷题目前最苦逼的一次, 调试N次没通过, 最后一步一步粘的答案排错
/*
class Solution {
public:
bool isSubtree(TreeNode* node1, TreeNode* node2) {
if (NULL == node2) {
return true;
}
if (NULL == node1) {
return false;
}
if (node1->val != node2->val) {
return false;
}
return isSubtree(node1->left, node2->left) && isSubtree(node1->right, node2->right);
}
bool HasSubtree(TreeNode* pRoot1, TreeNode* pRoot2)
{
bool ret = false;
if ((NULL != pRoot1) && (NULL != pRoot2)) {
if (pRoot1->val == pRoot2->val) {
ret = isSubtree(pRoot1, pRoot2);
}
if (!ret) {
ret = HasSubtree(pRoot1->right, pRoot2);
}
if (!ret) {
//ret = HasSubtree(pRoot2->left, pRoot2); -------> 一直没发现这地方代码应该是1
ret = HasSubtree(pRoot1->left, pRoot2);
}
}
return ret;
}
};
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
TreeNode(int x) :
val(x), left(NULL), right(NULL) {
}
};*/