剑指 Offer 26. 树的子结构
作者:互联网
剑指 Offer 26. 树的子结构 - 力扣(LeetCode) (leetcode-cn.com)
B是A的子树的情况:
- B先遍历空
- A=B
- B是A的左子树,或右子树。
如果B先为空,则B是A的子树;如果A先空,则B不是A的子树。
需要一个函数比较A的子树和B相同,则B是A的子树:A子树根节点和B根节点相同,左右相等。
/**
* 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:
bool comp(TreeNode*A,TreeNode*B){
if(B==nullptr) return true;
if(A==nullptr) return false;
return A->val==B->val&&comp(A->left,B->left)&&comp(A->right,B->right);
}
bool isSubStructure(TreeNode* A, TreeNode* B) {
if(A==nullptr||B==nullptr) return false;
return comp(A,B)||isSubStructure(A->left,B)||isSubStructure(A->right,B);
}
};
标签:26,right,return,Offer,nullptr,子结构,子树,TreeNode,left 来源: https://blog.csdn.net/weixin_47791283/article/details/122610812