LeetCode第572题:另一个树的子树(简单)

LeetCode第572题:另一个树的子树(简单)

  • 题目:给定两个非空二叉树 s 和 t,检验 s 中是否包含和 t 具有相同结构和节点值的子树。s 的一个子树包括 s 的一个节点和这个节点的所有子孙。s 也可以看做它自身的一棵子树。

LeetCode第572题:另一个树的子树(简单)_第1张图片

  • 解题思路:选择递归的方法,但是还有两个例子过不了,不知道哪里错了。
class Solution {
     
    public boolean isSubtree(TreeNode s, TreeNode t) {
     
        if(s == null && t == null)  return true;
        if(s == null || t == null) return false;

        if(s.val == t.val){
     
            if(isSubtree(s.right,t.right) && isSubtree(s.left,t.left)){
     
                return true;
            }
        }

        return isSubtree(s.left,t)||isSubtree(s.right,t);
    }

   
}

在这里插入图片描述

  • 题解做法:这个做法先判断是否同时为空,再判断是否相同,其实还是不知道我的哪里错了。。。。
class Solution {
     
    public boolean isSubtree(TreeNode s, TreeNode t) {
     
        if (t == null) return true;   // t 为 null 一定都是 true
        if (s == null) return false;  // 这里 t 一定不为 null, 只要 s 为 null,肯定是 false
        return isSubtree(s.left, t) || isSubtree(s.right, t) || isSameTree(s,t);
    }

    /**
     * 判断两棵树是否相同
     */
    public boolean isSameTree(TreeNode s, TreeNode t){
     
        if (s == null && t == null) return true;
        if (s == null || t == null) return false;
        if (s.val != t.val) return false;
        return isSameTree(s.left, t.left) && isSameTree(s.right, t.right);
    }
}

作者:kelly2018
链接:https://leetcode-cn.com/problems/subtree-of-another-tree/solution/java-di-gui-ban-by-kelly2018/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

LeetCode第572题:另一个树的子树(简单)_第2张图片

你可能感兴趣的:(学生,leetcode)