题目
输入两颗二叉树A和B,判断B是否是A的子结构,例如下图中B是A的子结构
A B
参考代码1
bool IsPartTree(TreeNode *root1, TreeNode *root2) { if(root1 == NULL && root2 == NULL || root1!= NULL && root2 == NULL) return true; else if (root1 == NULL && root2 != NULL) return false; else { if ((root1->val == root2->val) && IsPartTree(root1->left, root2->left) && IsPartTree(root1->right, root2->right)) return true; else return IsPartTree(root1->left, root2) || IsPartTree(root1->right, root2); } }
测试

参考代码2(参考《剑指offer》)
bool HasPartTree(BinaryTreeNode *p1, BinaryTreeNode *p2) { bool result = false; if(p1 != NULL && p2 != NULL) { if(p1->m_nValue == p2->m_nValue) result = IsPart(p1, p2); if(!result) result = HasPartTree(p1->m_pLeft, p2); if(!result) result = HasPartTree(p1->m_pRight, p2); } return result; }
测试
