剑指offer系列之十六:树的子结构

简介:

题目描述

输入两颗二叉树A,B,判断B是不是A的子结构。

这实际上二叉树遍历算法的一种应用,要在原二叉树中查找是否具有某课子树,只需要判断每个节点是否都在二叉树中是否出现即可。所以需要先判断头结点,只有头结点符合要求才继续比较其子树是否符合,一样依次从头结点开始比较直到其左右子树进行比较,如果都符合则说明B是A的子结构。下面是基于这种思路实现的代码(已被牛客AC):

package com.rhwayfun.offer;

public class SubTree {

    public class TreeNode {
        int val = 0;
        TreeNode left = null;
        TreeNode right = null;

        public TreeNode(int val) {
            this.val = val;

        }

    }

    public boolean HasSubtree(TreeNode root1, TreeNode root2) {
        boolean hasSubTree = false;
        if(root1 != null && root2 != null){
            if(root1.val == root2.val){
                hasSubTree = nodesValEqual(root1,root2);
            }
            if(!hasSubTree){
                hasSubTree = HasSubtree(root1.left, root2);
            }
            if(!hasSubTree){
                hasSubTree = HasSubtree(root1.right, root2);
            }
        }

        return hasSubTree;
    }

    private boolean nodesValEqual(TreeNode root1, TreeNode root2) {
        if(root2 == null) return true;
        if(root1 == null) return false;
        if(root1.val != root2.val) return false;
        return nodesValEqual(root1.left, root2.left) && nodesValEqual(root1.right, root2.right);
    }
}
AI 代码解读
目录
打赏
0
0
0
0
85
分享
相关文章
【剑指offer】-树的子结构-17/67
【剑指offer】-树的子结构-17/67
|
10月前
牛客网-树的子结构
牛客网-树的子结构
57 0
数据结构与算法学习十五:常用查找算法介绍,线性排序、二分查找(折半查找)算法、差值查找算法、斐波那契(黄金分割法)查找算法
四种常用的查找算法:顺序查找、二分查找(折半查找)、插值查找和斐波那契查找,并提供了Java语言的实现代码和测试结果。
56 0
|
10月前
【一刷《剑指Offer》】面试题 18:树的子结构
【一刷《剑指Offer》】面试题 18:树的子结构
二叉树(中)+Leetcode每日一题——“数据结构与算法”“剑指Offer55-I. 二叉树的深度”“100.相同的树”“965.单值二叉树”
二叉树(中)+Leetcode每日一题——“数据结构与算法”“剑指Offer55-I. 二叉树的深度”“100.相同的树”“965.单值二叉树”
|
10月前
|
C++
【数据结构&C++】超详细一文带小白轻松全面理解 [ 二叉平衡搜索树-AVL树 ]—— [从零实现&逐过程分析&代码演示&简练易懂]
【数据结构&C++】超详细一文带小白轻松全面理解 [ 二叉平衡搜索树-AVL树 ]—— [从零实现&逐过程分析&代码演示&简练易懂]
【408数据结构与算法】—树和二叉树(二十七)
【408数据结构与算法】—树和二叉树(二十七)
代码随想录算法训练营第二十二天 | LeetCode 669. 修剪二叉搜索树、108. 将有序数组转换为二叉搜索树、538. 把二叉搜索树转换为累加树
代码随想录算法训练营第二十二天 | LeetCode 669. 修剪二叉搜索树、108. 将有序数组转换为二叉搜索树、538. 把二叉搜索树转换为累加树
66 0
剑指offer 25. 树的子结构
剑指offer 25. 树的子结构
74 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等