题目:输入两棵二叉树A和B,判断B是不是A的子结构。
【代码】
#include<iostream>
//#include<vector>
#include<string>
#include<algorithm>
//#include<stack>
using namespace std;
struct BinaryTreeNode
{
double value;
BinaryTreeNode* left;
BinaryTreeNode* right;
};
bool equal(double v1,double v2)
{
if (v1-v2>-0.0000001 && v1-v2<0.0000001)
{
return true;
}
else
{
return false;
}
}
bool DoseTree1HasTree2(BinaryTreeNode* root1, BinaryTreeNode* root2)
{
if (root2==NULL)
{
return true;
}
if (root1==NULL)
{
return false;
}
if (!equal(root1->value, root2->value))
{
return false;
}
return DoseTree1HasTree2(root1->left, root2->right) && DoseTree1HasTree2(root1->left, root2->right);
}
bool HasSubtree(BinaryTreeNode* root1, BinaryTreeNode* root2)
{
bool has = false;
if (root1!=NULL&&root2!=NULL)
{
if (equal(root1->value,root2->value))
{
has = DoseTree1HasTree2(root1, root2);
}
if (!has)
{
has = HasSubtree(root1->left, root2);
}
if (!has)
{
has = HasSubtree(root1->right, root2);
}
}
return has;
}
int main()
{
return 0;
}
/****
***/