LeetCode 26.. 树的子结构
原题链接
中等
作者:
owonder
,
2020-08-27 20:52:36
,
所有人可见
,
阅读 370
C++ 代码
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
//注意这里,B需要回溯,那么A同时需要回溯
bool isSubStructure(TreeNode* A, TreeNode* B) {
if(!A||!B){
return false;
}
return isSub(A, B) || isSubStructure(A -> left, B) || isSubStructure(A -> right, B);
}
bool isSub(TreeNode* A, TreeNode* B)
{
//如果B为空,说明B已经访问完了,确定是A的子结构
if(B == NULL) return true;
//如果B不为空A为空,或者这两个节点值不同,说明B树不是A的子结构,直接返回false
if(A == NULL || A -> val != B -> val) return false;
//当前节点比较完还要继续比较左右子节点
return isSub(A -> left, B -> left) && isSub(A -> right, B -> right);
}
};