项目场景:
力扣:剑指 Offer 26. 树的子结构
2023-3-7刷题小记
问题描述
提示:这里描述项目中遇到的问题:
同样是下面的代码,第一遍交的时候一直报错,说堆溢出,找了很长时间的bug,结果刷新一下网页,就没事了,很迷惑
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
bool ret;
bool isEqual(struct TreeNode* rootA, struct TreeNode* rootB);
void dfs(struct TreeNode* node, struct TreeNode* B);
bool isSubStructure(struct TreeNode* A, struct TreeNode* B){
ret = false;
if(A == NULL || B == NULL) return false;
//下面是A!=NULL && B!=NULL的情况
dfs(A, B);
return ret;
}
bool isEqual(struct TreeNode* rootA, struct TreeNode* rootB){
if(rootA == NULL && rootB == NULL) return true;
if(rootA != NULL && rootB == NULL) return true;
if(rootA == NULL && rootB != NULL) return false;
//下面就是rootA != NULL && rootB != NULL 的情况
if(rootA->val != rootB->val){
return false;
}
bool left = isEqual(rootA->left, rootB->left);
bool right = isEqual(rootA->right, rootB->right);
return left && right;
}
void dfs(struct TreeNode* node, struct TreeNode* B){
if(node == NULL) return;
if(node->val == B->val){
bool tem = isEqual(node, B);
ret = ret || tem;
}
dfs(node->left, B);
dfs(node->right, B);
}
报错信息
==42==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x603000000060 at pc 0x00000034afb8 bp 0x7ffe7a13edf0 sp 0x7ffe7a13ede8
WRITE of size 1 at 0x603000000060 thread T0