题目描述:
给定两个非空二叉树 s 和 t,检验 s 中是否包含和 t 具有相同结构和节点值的子树。s 的一个子树包括 s 的一个节点和这个节点的所有子孙。s 也可以看做它自身的一棵子树。
示例:
来源:力扣(LeetCode)
代码:
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
//这是一个判断两个树是否相同的函数
public boolean issameTree(TreeNode s,TreeNode t) {
if(s==null &&t==null) {
return true;
}
if(s==null||t==null) {
return false;
}
return s.val==t.val&&issameTree(s.left,t.left)&& issameTree(s.right,t.right);
}
public boolean isSubtree(TreeNode s, TreeNode t) {
if(s==null) {
return false;
}
//判断是否为根节点的子树或者左子树的子树或者右子树的子树,有一个满足就说明是其子树
return issameTree(s,t)||isSubtree(s.left,t)||isSubtree(s.right,t);
}
}
运行结果: