题目
题目链接:https://leetcode-cn.com/problems/check-subtree-lcci/
题目大意:就是判断t2是否为t1的子树,通过递归判断即可
代码
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public boolean checkSubTree(TreeNode t1, TreeNode t2) {
//如果t1是空的,检查t2是否是空的
if(t1==null)
return t2==null;
//如果当前两个树的结点不相同,则判断t1的左子树跟t2想不想同,判断t1的右子树跟t2相不相同
return (same(t1,t2)||checkSubTree(t1.left, t2)||checkSubTree(t1.right, t2));
}
//判断子树
private boolean same(TreeNode t1, TreeNode t2) {
//如果两个子节点都为空则返回true
if(t1==null&&t2==null)
return true;
//如果两个子节点其中一个为空,另外一个不为空,则返回false
if(t1==null||t2==null)
return false;
//返回两个子节点的值和他们的左子树和右子树
return (t1.val==t2.val&&same(t1.left, t2.left)&&same(t1.right, t2.right));
}
}