「力扣」第 572 题:另一个树的子树


「力扣」第 572 题:另一个树的子树

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

示例 1:
给定的树 s

     3
    / \
   4   5
  / \
 1   2

给定的树 t

   4 
  / \
 1   2

返回 true,因为 ts 的一个子树拥有相同的结构和节点值。

示例 2:
给定的树 s

     3
    / \
   4   5
  / \
 1   2
    /
   0

给定的树 t

   4
  / \
 1   2

返回 false

思路:递归结构照着抄一遍就好了。

Java 代码:

class TreeNode {
    int val;
    TreeNode left;
    TreeNode right;

    TreeNode(int x) {
        val = x;
    }
}

public class Solution {

    public boolean isSubtree(TreeNode s, TreeNode t) {
        if (s == null && t == null) {
            return true;
        }

        if (s == null || t == null) {
            return false;
        }
        return isSameTree(s, t) || isSubtree(s.left, t) || isSubtree(s.right, t);
    }

    private 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);
    }
}

(本节完)


文章作者: liweiwei1419
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 liweiwei1419 !
评论
 上一篇
「力扣」第 993 题:二叉树的堂兄弟节点 「力扣」第 993 题:二叉树的堂兄弟节点
「力扣」第 993 题:二叉树的堂兄弟节点 链接:993. 二叉树的堂兄弟节点; 题解链接:深度优先遍历、广度优先遍历。 在二叉树中,根节点位于深度 0 处,每个深度为 k 的节点的子节点位于深度 k + 1 处。 如果二叉树的两个节点
下一篇 
「力扣」第 983 题:最低票价 「力扣」第 983 题:最低票价
「力扣」第 983 题:最低票价 链接:https://leetcode-cn.com/problems/minimum-cost-for-tickets 在一个火车旅行很受欢迎的国度,你提前一年计划了一些火车旅行。在接下来的一年里,你
  目录