树的子结构

题目描述:

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

B是A的子结构, 即 A中有出现和B相同的结构和节点值。

例如:
给定的树 A:

  3
 / \
4   5
/ \
1   2

给定的树 B:

 4 
/
1

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

示例 1:
输入:A = [1,2,3], B = [3,1]
输出:false

示例 2:
输入:A = [3,4,5,1,2], B = [4,1]
输出:true


解法:

递归
若B是树A的子结构,则子结构的根节点可能为树A的任意一个节点。
因此,判断树B是否是树A的子结构,需要完成以下两步工作:
1.先序遍历树A中的每个节点nA
2.判断树A中以nA为根节点的子树是否包含树B

class Solution {
    public boolean isSubStructure(TreeNode A, TreeNode B) {
        if(A==null || B==null) return false;
        return isstructure(A,B) || isSubStructure(A.left,B) || isSubStructure(A.right,B);
    }

    public boolean isstructure(TreeNode A,TreeNode B){
        if(B==null) return true;
        if(A==null) return false;
        if(A.val!=B.val) return false;
        return isstructure(A.left,B.left) && isstructure(A.right,B.right);
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 题目描述: 输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构) B是A的子结构, 即...
    周英杰Anita阅读 124评论 0 0
  • 题目 输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构) B是A的子结构, 即 A中...
    人一己千阅读 103评论 0 0
  • 题目描述 输入两棵二叉树A和B,判断B是不是A的子结构。二叉树节点的定义如下: 解题思路 在树A中查找于根节点的值...
    悬崖边上的日与夜阅读 158评论 0 0
  • 输入两棵二叉树A,B,判断B是不是A的子结构。 ps:我们约定空树不是任意一个树的子结构 思路一:总的分为两步第一...
    繁星追逐阅读 131评论 0 0
  • 题目描述 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构) 知识点 二叉...
    凌霄文强阅读 208评论 0 2

友情链接更多精彩内容