您的位置:首页 > 其它

判断一颗二叉树是是否是另一颗树的子树

2017-07-31 10:26 253 查看
//以root1为节点的树中,是否有和root2相同的节点
bool IsTree2InTree1(Node* root1, Node* root2)
{
if (root1 == NULL)
return false;

bool result = false;

if (root1->_data == root2->_data)
result = IsSameTree(root1, root2);//有相同的节点

if (result == false)
result = IsTree2InTree1(root1->_left, root2);//root1的左子树中是否有和root2根节点相同的节点

if (result == false)
result = IsTree2InTree1(root1->_right, root2);//root1的右子树中是否有和root2根节点相同的节点

return result;
}

//root2是不是以root1开头的子树
bool IsSameTree(Node* root1, Node* root2)
{
if (root2 == NULL)//root2已走完,此时是root1的子树
return true;
if (root1 == NULL)//此时root2未走完,但root1已走完,返回false
return false;
if (root1->_data != root2->_data)
return false;
return IsSameTree(root1->_left, root2->_left) && IsSameTree(root1->_right, root2->_right);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐