判断二叉树B是否是二叉树A的子结构

题目

在这里插入图片描述
在这里插入图片描述

代码

思路

如果二叉树B是二叉树A的子树,A树中必然存在B树的根节点。所以,先比较A树的根节点与B树的根节点,如果相同,则采用递归方法比较A树的左子树和B树的左子树以及比较A树的右子树和B树的右子树。如果不相同,则用A树根节点的左孩子与B树的跟节点比较,这里调用的是isSubStructure方法而不是helper方法是因为A树根节点的左孩子不一定存在。如果还不相同,同理用A树根节点的右孩子与B树的跟节点比较。

class Solution {
    public boolean isSubStructure(TreeNode A, TreeNode B) {
        return (A != null) && (B != null) &&((helper(A,B) || isSubStructure(A.left,B) || isSubStructure(A.right,B)));
    }
    public boolean helper(TreeNode A, TreeNode B) {
        if (B == null) return true;
        if (A == null || A.val != B.val) return false;
        return helper(A.left,B.left) && helper(A.right,B.right);
    }
}

版权声明:本文为qq_29494693原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。