美文网首页
17. 树的子结构

17. 树的子结构

作者: 丶沧月 | 来源:发表于2019-03-13 22:37 被阅读0次

题目描述

输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)


image.png

解题思路

要查找树A中是否存在和树B结构一样的子树,我们可以分两步:第一步在树A中找到和B的根节点的值一样的结点R,第二步再判断树A中以R为根结点的子树是不是包含和树B一样的结构。

以上面的两棵树为例来详细分析这个过程。首先我们试着在树A中找到值为8的结点。从树A的根节点开始遍历,我们发现它的根节点的值就是8.接着我们就去判断树A的根节点下面的子树是不是含有和树B一样的结构。在树A中,根节点的左子结点的值是8,而树B的根节点的左子结点是9,对应的两个结点不同。

因此我们仍然要遍历A,接着查找值为8的结点。我们在树的第二层中找到一个值为8 的结点,然后进行第二步的判断,即判断这个结点下面的子树是否含有和树B一样结构的子树。于是我们遍历这个结点下面的子树,先后得到两个子节点9和2,这和树B的结构完全相同。此时我们在树A中找到了一个和树B的结构一样的子树,因此树B和树A的子结构。

一定要检查边界条件,即检查空指针。当树A或树B为空的时候,定义相同的输出。如果没有检查并做响应的处理,程序非常容易崩溃,这是面试的时候非常忌讳的事情。

代码实现

public boolean HasSubtree(TreeNode root1, TreeNode root2) {
    if (root1 == null || root2 == null)
        return false;
    return isSubtreeWithRoot(root1, root2) || HasSubtree(root1.left, root2) || HasSubtree(root1.right, root2);
}

private boolean isSubtreeWithRoot(TreeNode root1, TreeNode root2) {
    if (root2 == null)
        return true;
    if (root1 == null)
        return false;
    if (root1.val != root2.val)
        return false;
    return isSubtreeWithRoot(root1.left, root2.left) && isSubtreeWithRoot(root1.right, root2.right);
}

相关文章

  • 17.树的子结构

    本题如意疏忽的是并没有说要求两棵树都从根界节点开始找。 思路: 首先看到树就要考虑递归。递归判断一下两棵树的结构,...

  • 17. 树的子结构

    题目描述 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构) 解题思路 要...

  • 18 树的子结构

    树的子结构 题目描述: 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)...

  • 《剑指offer》— JavaScript(17)树的子结构

    树的子结构 题目描述 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构) ...

  • 剑指Offer - 17 - 树的子结构

    题目描述 树的子结构 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构) ...

  • 树的子结构

    题目描述: 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构) 分析: 首...

  • 树的子结构

    输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)

  • 树的子结构

    问题描述输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构) 解决思路首先判...

  • 树的子结构

    题目: 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构) 判断当前节点包...

  • 树的子结构

    题目描述输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构) 这种条件下用 ...

网友评论

      本文标题:17. 树的子结构

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