您的位置:首页 > 职场人生

树的子结构

2016-05-24 11:29 260 查看
树的子结构

bool HasSubtree(TreeNode* pRoot1, TreeNode* pRoot2)
{
//if(pRoot1==NULL&&pRoot2==NULL)
//return true;
if(pRoot1==NULL||pRoot2==NULL)//只要一个为空就false,理解为Tree1如果左孩子不包含该子树,应该退出判断右孩子,所以不可以返回true
return false;
bool result = false;
if(pRoot1->val==pRoot2->val)
result = DoseTree1HasTree2(pRoot1,pRoot2);
if(!result)
result = HasSubtree(pRoot1->left,pRoot2);
if(!result)
result = HasSubtree(pRoot1->right,pRoot2);
return result;
}
bool DoseTree1HasTree2(TreeNode* pRoot1,TreeNode* pRoot2)
{
//if(pRoot1==NULL&&pRoot2==NULL) // 该条件去掉注释也是正确的
//return true;
if(pRoot2 == NULL)
return true;
if(pRoot1 == NULL) //相当于if(pRoot2!=NULL&&pRoot1==NULL)
return false;
if(pRoot1->val!=pRoot2->val)
return false;
return (DoseTree1HasTree2(pRoot1->left,pRoot2->left))&&
(DoseTree1HasTree2(pRoot1->right,pRoot2->right));
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  面试 二叉树