题目描述
输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)
题目地址
思路
- 递归
- 有两个递归的点:一、递归寻找与子树根节点相同的点;二、递归判断子结构是否相同
Code
class Solution {
public:
bool HasSubtree(TreeNode* pRoot1, TreeNode* pRoot2) {
if (pRoot2 == NULL || pRoot1 == NULL)
return false;
// 递归寻找与子树根节点相同的点
return isSubTree(pRoot1, pRoot2)
|| HasSubtree(pRoot1->left, pRoot2)
|| HasSubtree(pRoot1->right, pRoot2);
}
bool isSubTree(TreeNode* pRoot1, TreeNode* pRoot2) {
if (pRoot2 == NULL) return true;
if (pRoot1 == NULL) return false;
// 递归判断子结构是否相同
if (pRoot1->val == pRoot2->val)
return isSubTree(pRoot1->left, pRoot2->left)
&& isSubTree(pRoot1->right, pRoot2->right);
else
return false;
}
};

本文探讨了如何判断一棵二叉树是否为另一棵二叉树的子结构,通过递归算法实现,提供了详细的代码示例及解析。

895

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



