问题描述:
输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)
源码:
递归的比非递归简单,小编很少的一次性通过的题目。
/*
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){bool result = false;if(pRoot1 && pRoot2){if(pRoot1->val == pRoot2->val)result = IsSame(pRoot1, pRoot2);if(!result)result = HasSubtree(pRoot1->left, pRoot2);if(!result)result = HasSubtree(pRoot1->right, pRoot2);}return result;}bool IsSame(TreeNode* big, TreeNode* com){if(!com) return true;if(!big) return false;if(big->val == com->val)return IsSame(big->left, com->left) && IsSame(big->right, com->right);elsereturn false;}
};