LeetCode 572 题解

简介: LeetCode 572 题解

LeetCode 572 题解


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

image.png

image.png

思路

思路先通过后序遍历遍历二叉树,将当前节点值与t树的头节点值进行比较如果相同则进行递归比较s的子树与t是否相同,如果相同返回true,如果不同则继续遍历二叉树


代码实现


public boolean isSubtree(TreeNode s, TreeNode t) {
        if(s == null && t !=null) return false;
        // 判断一棵树 是不是另外一棵树的子树,有三种情况
        return isSubtree(s.left, t) || isSubtree(s.right, t) || isSubtreeWithRoot(s, t);
    }
    private boolean isSubtreeWithRoot(TreeNode s, TreeNode t) {
        if(s == null && t == null) return true;
        if(s == null && t != null) return false;
        if(s != null && t == null) return false;
        if(s.val != t.val) return false;
        return isSubtreeWithRoot(s.left, t.left) && isSubtreeWithRoot(s.right, t.right) ;
    }
相关文章
|
11月前
第46期题解
第46期题解
|
3月前
|
存储
leetcode2题解
Leetcode2两数相加的题解
19 2
|
3月前
leetcode3题解
leetcode3的题解
17 1
|
3月前
leetcode209题解
leetcode209题解
19 0
|
3月前
|
算法
leetcode4题解
leetcode4题解
21 0
|
10月前
Leetcode contests 93 题解
870. Advantage Shuffle 起始就是hdoj 1502田忌赛马,但要求的结果不一样而已。这里我用了个pair来记录B中每个数字对应的位置。
37 0
|
11月前
|
数据安全/隐私保护
[FlareOn5]FLEGGO 题解
[FlareOn5]FLEGGO 题解
41 1
|
11月前
|
数据安全/隐私保护
[UTCTF2020]babymips 题解
[UTCTF2020]babymips 题解
53 1
|
10月前
Leetcode contests 95 题解
用容斥原理可以计算出一个数字Num之下有多少个A或B的倍数cnt,我们从最大值二分这个数字Num,拿cnt和N做比较来决定二分的走向,最终l和r肯定会收敛到一起,这就是我们要的结果了。 这道题的数值范围不是特别大 ,用long就可以完全满足需求了。
20 0
|
11月前
|
数据安全/隐私保护
[FlareOn6]Overlong 题解
[FlareOn6]Overlong 题解
80 0