输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构)
B是A的子结构, 即 A中有出现和B相同的结构和节点值。
此题需要注意:这里的相同结构不是具有相同的子树的意思,这一点需要注意!
bool compare2(TreeNode *A, TreeNode *B) {
if( nullptr == B)
return true;
if(nullptr == A)
return false;
bool c = A->val == B->val;
bool l = compare2(A->left, B->left);
bool r = compare2(A->right, B->right);
return c && l && r;
}
bool compare1(TreeNode *A, TreeNode *B) {
if(nullptr == A)
return false;
bool c = compare2(A, B);
bool l = compare1(A->left, B);
bool r = compare1(A->right, B);
return c || l || r;
}
bool isSubStructure(TreeNode* A, TreeNode* B) {
if(nullptr == A || nullptr == B)
return false;
return compare1(A, B);
}

本文探讨了如何判断一棵二叉树是否为另一棵二叉树的子结构,提供了详细的算法实现,包括如何比较两棵树的结构和节点值,以及递归遍历策略。
328

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



