另一个树的子树
Posted L_add
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了另一个树的子树相关的知识,希望对你有一定的参考价值。
另一个树的子树
题目描述:
给定两个非空二叉树 s 和 t,检验 s 中是否包含和 t 具有相同结构和节点值的子树。s 的一个子树包括 s 的一个节点和这个节点的所有子孙。s 也可以看做它自身的一棵子树。
题目来源:力扣(LeetCode)
思路:
若t是s的子树
t与s的所有子树都比较一遍,有相等即可
bool isSameTree(struct TreeNode* p,struct TreeNode* q){
if(p == NULL && q == NULL)
return true;
if(p == NULL || q == NULL)
return false;
if(p->val != q->val)
return false;
return isSameTree(p->left,q->left)
&& isSameTree(p->right,q->right);
}
bool isSubtree(struct TreeNode* root, struct TreeNode* subRoot){
//遍历s这棵树的每个结点,每个结点做子树去跟t比较
if(root == NULL)
return false;
//每个结点都会作为子树的根出现
if(isSameTree(root,subRoot))
return true;
return isSubtree(root->left,subRoot)
|| isSubtree(root->right,subRoot);
}
以上是关于另一个树的子树的主要内容,如果未能解决你的问题,请参考以下文章