本文主要是介绍java、go语言实现判断树的子结构,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
力扣26题目:判断树的子结构,官方链接:https://leetcode-cn.com/problems/shu-de-zi-jie-gou-lcof/
题目描述:给定A、B两棵树,判断B树是否为A树的子结构
举例:
输入:
给定树A:
3/ \4 5/ \1 2
给定树B:
4 /1
结果:返true,因图中可以看出B为A的子结构
解题思路:
- 1.如果B为A的子结构,那么A中的任意节点都有可能成为B的根节点
- 2.我们可以固定A中的任意一个节点,比如就从跟节点开始,那么从该节点要判断能不能覆盖B树,则只需要依次递归左右子树,判断左右子树能覆盖B的左右子树即可。能否覆盖的退出条件为:B == null 说明B树的所有节点都已经匹配了返回true;A == null || A.val != B.val 返回fasle,A为空了,说明A覆盖不了B,或者A的值不等于B的值
- 3.以上是固定的其中一个节点的判断方式,根据A中的任意节点都可能为B的根节点这个条件,我们
这篇关于java、go语言实现判断树的子结构的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!