面试题26. 树的子结构
题目:
解答:
1 1 class Solution { 2 2 bool isSubtree(TreeNode* pRootA, TreeNode* pRootB) 3 3 { 4 4 if (pRootB == NULL) 5 5 { 6 6 return true; 7 7 } 8 8 if (pRootA == NULL) 9 9 { 10 10 return false; 11 11 } 12 12 if (pRootB->val == pRootA->val) 13 13 { 14 14 return isSubtree(pRootA->left, pRootB->left) 15 15 && isSubtree(pRootA->right, pRootB->right); 16 16 } 17 17 else 18 18 { 19 19 return false; 20 20 } 21 21 } 22 22 public: 23 23 bool HasSubtree(TreeNode* pRootA, TreeNode* pRootB) 24 24 { 25 25 if (pRootA == NULL || pRootB == NULL) 26 26 { 27 27 return false; 28 28 } 29 29 return isSubtree(pRootA, pRootB) || 30 30 HasSubtree(pRootA->left, pRootB) || 31 31 HasSubtree(pRootA->right, pRootB); 32 32 } 33 33 }; 34