树树的子结构

Posted ocpc

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了树树的子结构相关的知识,希望对你有一定的参考价值。

题目:
输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)。

 

解答:

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

 

以上是关于树树的子结构的主要内容,如果未能解决你的问题,请参考以下文章

二叉树树的子结构

剑指Offer树树的子结构

二叉树树森林

数据结构-二叉树入门

Java复习--树

Java复习--树