输入两棵二叉树A,B,判断B是不是A的子结构。(我们约定空树不是任意一个树的子结构)
题目介绍
输入两棵二叉树A,B,判断B是不是A的子结构。(我们约定空树不是任意一个树的子结构)
题目分析
这个可以通过依次遍历的方法,采用递归来完成计算。
源代码
/*
struct TreeNode {int val;struct TreeNode *left;struct TreeNode *right;TreeNode(int x) :val(x), left(NULL), right(NULL) {}
};*/
class Solution
{
public:bool HasSubtree(TreeNode* pRoot1, TreeNode* pRoot2){int res=0;if(pRoot1!=NULL&&pRoot2!=NULL){if(pRoot1->val==pRoot2->val){res=compare_tree(pRoot1,pRoot2);}if(!res){res=HasSubtree(pRoot1->left,pRoot2);}if(!res){res=HasSubtree(pRoot1->right,pRoot2);}}return res;}bool compare_tree(TreeNode* pRoot1, TreeNode* pRoot2){if(pRoot2 == NULL){return true;}if(pRoot1 == NULL){return false;}if(pRoot1->val == pRoot2->val){return compare_tree(pRoot1->left,pRoot2->left) && compare_tree(pRoot1->right,pRoot2->right);}return false;}
};