美文网首页
245. 子树

245. 子树

作者: 6默默Welsh | 来源:发表于2018-02-01 19:56 被阅读41次

描述

有两个不同大小的二叉树: T1 有上百万的节点; T2 有好几百的节点。请设计一种算法,判定 T2 是否为 T1的子树。

注意事项

若 T1 中存在从节点 n 开始的子树与 T2 相同,我们称 T2 是 T1 的子树。也就是说,如果在 T1 节点 n 处将树砍断,砍断的部分将与 T2 完全相同。

样例

下面的例子中 T2 是 T1 的子树:

       1                3
      / \              / 
T1 = 2   3      T2 =  4
        /
       4

下面的例子中 T2 不是 T1 的子树:

       1               3
      / \               \
T1 = 2   3       T2 =    4
        /
       4

思路

考虑两棵树都为空, 两棵树相等,两棵树不相等时分别对 T1 的左子树是否包含 T2 以及 T1 的右子树是否包含 T2 进行判断

代码

/**
 * Definition of TreeNode:
 * public class TreeNode {
 *     public int val;
 *     public TreeNode left, right;
 *     public TreeNode(int val) {
 *         this.val = val;
 *         this.left = this.right = null;
 *     }
 * }
 */
public class Solution {
    /**
     * @param T1, T2: The roots of binary tree.
     * @return: True if T2 is a subtree of T1, or false.
     */
    public boolean isSubtree(TreeNode T1, TreeNode T2) {
        if (T2 == null) {
            return true;
        }
        if (T1 == null) {
            return false;
        }
        
        if (isEqual(T1, T2)) {
            return true;
        }
        if (isSubtree(T1.left, T2) || isSubtree(T1.right, T2)) {
            return true;
        }
        return false;
    }
    
    private boolean isEqual(TreeNode T1, TreeNode T2) {
        // 递归出口
        if (T1 == null || T2 == null) {
            return T1 == T2;
        }
        if (T1.val != T2.val) {
            return false;
        }
        return isEqual(T1.left, T2.left) && isEqual(T1.right, T2.right);
    }
}

相关文章

  • 245. 子树

    描述 有两个不同大小的二叉树: T1 有上百万的节点; T2 有好几百的节点。请设计一种算法,判定 T2 是否为 ...

  • lintcode 245. 子树

    难度:简单 1. Description 2. Solution 原理:前序遍历相同的完全二叉树,是完全相同的二叉...

  • 245. 结婚

    那场春雨之后 天地沦陷于浓浓的花香 红盖头下的新娘 几乎幸福得窒息过去 你走上前 送来一双 满是爱恋的双手 一个永...

  • 245.小诗

    快乐简单而纯粹 西沉的太阳一点点隐没 时光像是停滞 一觉醒来 熹微的晨光穿透一切 白杨树的枝叶一律向上 一座小城,...

  • 245.快慢

    村庄 池塘 柳树 来不及思绪飘摇 城市 公路 汽车 来不及追赶奔跑 一切都太快 一切都太慢

  • 245.边界

    “我们认识12年了,从我上大学第一次见到她,我就喜欢她,后来她也告诉我,她也第一眼就喜欢我,这么多年,我们从未离开...

  • 245.我允许

    我允许任何事情的发生 我允许,事情是如此的开始 如此的发展,如此的结局 因为我知道, 所有的事情,都是因缘和合而来...

  • 245.高考寄语

    2019年3月4日,星期一,晴 十年寒窗苦读书,只为今朝赴战场。 在过去的岁月里,或许你们曾经失败过,迷茫过,焦虑...

  • 245.瑜伽记录

    中午上了外教老师的课。今天的串联练习强度没有那么大,整体下来还挺轻松的。下犬四柱都能做下来,肩倒立,梨式也都轻松的...

  • 245.系统思考模型

    【洋豆豆荐书】第245天~系统思考模型 245.《系统思考》[美]丹尼斯·舍伍德 系统思考的入门书籍,帮你找出问题...

网友评论

      本文标题:245. 子树

      本文链接:https://www.haomeiwen.com/subject/bgljzxtx.html