class Solution {
public:
bool hasSubStructure(TreeNode* A, TreeNode* B){ //A、B根节点相同,B是不是A的子结构
if(!B) return true; //A的一个节点B的对应位置没有,可以认为是子结构
//B的一个节点A的对应位置没有 / A,B对应位置节点值不同,此时必然不可能是子结构
if (!A || A->val != B->val) return false;
//继续在对应位置递归判断
return (hasSubStructure(A->left,B->left)&&hasSubStructure(A->right,B->right));
}
bool isSubStructure(TreeNode* A, TreeNode* B) {
if(!A||!B) return false;
// 根节点相同的话直接进入比较,根节点不相同看B是不是A的左/右子树的子结构
else return (isSubStructure(A->left,B)||isSubStructure(A->right,B)||hasSubStructure(A,B));
}
};
剑指 Offer 26. 树的子结构 可递归
于 2022-05-08 11:07:58 首次发布