2019.10.24——树的子结构
文章目录 题目描述 题目思路 代码 题目描述 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构) 题目思路 这题相当于在集合A中找是否存在集合B,而这题又涉及到树的结构,一想到树,我们很容易想到递归算法,因为关于树的很多算法都采用的是递归的思想,那么这题我们能不能使用递归的想法呢?这里的话我们采取先序+递归的联合思想。首先,我们将A和B的根相比较,如果一致再比较左右子树,当然可能A,B的根并不相等,那么我们要把B的根与A的左右子树进行比较,找到一致的后,再将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 ) { bool flag = false ; //判断是否找到 if ( pRoot1 && pRoot2 ) //因为A为空或者B为空或者 /