描述
输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)
输入:{8,8,#,9,#,2,#,5},{8,9,#,2}
返回值:true
class Solution {
public:
bool isSub(TreeNode* p1, TreeNode* p2) {
if (!p2) return true;
else if (!p1) return false;
// p1 和 p2 的根节点相同并且 p1 和 p2 的左子树和右子树分别相同
return p1->val == p2->val && isSub(p1->left, p2->left) && isSub(p1->right, p2->right);
}
bool HasSubtree(TreeNode* p1, TreeNode* p2) {
if (!p1 || !p2) return false;
return isSub(p1, p2) || HasSubtree(p1->left, p2) || HasSubtree(p1->right, p2);
}
};
二叉树子结构判断算法
该博客讨论了如何在二叉树中判断一个树是否是另一个树的子结构。提供的解决方案通过递归比较根节点及其子节点的值来实现。主要函数`isSub`检查两个节点是否具有相同的结构和值,而`HasSubtree`遍历整个树以查找子结构。
136

被折叠的 条评论
为什么被折叠?



