Leetcode 572. Subtree of Another Tree
题目链接: Subtree of Another Tree
难度:Easy
题目大意:
给出两棵二叉树s和t,判断t是不是s的子树。
思路:
遍历s中的节点,将遍历到的节点作为根节点,判断构成的树是否和t是两棵完全一样的二叉树。
代码
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
class Solution {
public boolean isSubtree(TreeNode s, TreeNode t) {
if(s==null){//这个判断条件不能少
return false;
}
if(isSame(s,t)){
return true;
}
else{
return isSubtree(s.left,t)||isSubtree(s.right,t);
}
}
public boolean isSame(TreeNode s,TreeNode t){
if(s==null||t==null){
return s==t;
}
if(s.val!=t.val){
return false;
}
return isSame(s.left,t.left)&&isSame(s.right,t.right);
}
}