面试题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  

 

posted @ 2020-05-09 14:49  梦醒潇湘  阅读(136)  评论(0)    收藏  举报