首页 > 其他分享 >剑指Offer 26. 树的子结构

剑指Offer 26. 树的子结构

时间:2023-08-27 17:25:42浏览次数:36  
标签:26 Right return nil Offer 子结构 dfs TreeNode

题目链接: 剑指Offer 26. 树的子结构

题目描述:

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

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

解法思路:

首先这道题很明显是采取递归的形式,整体流程主要分为两步:

  1. 找到A树上的某个节点 与 B树的根节点相匹配,(如果找不到直接false了)。

  2. 第一步找到之后,利用递归依次判断A的左子树与B的左子树是否相等,A的右子树与B的右子树是否相等,左右子树比较取 与 运算得到最终结果。

代码:

/**
 * Definition for a binary tree node.
 * type TreeNode struct {
 *     Val int
 *     Left *TreeNode
 *     Right *TreeNode
 * }
 */
func isSubStructure(A *TreeNode, B *TreeNode) bool {
    if B == nil || A == nil {
        return false
    }
    if dfs(A,B) {
        return true
    }
    return isSubStructure(A.Left,B) || isSubStructure(A.Right,B)

}
func dfs(A *TreeNode, B *TreeNode)bool{
    if B == nil {
        return true
    }
    if A == nil || A.Val != B.Val {
        return false
    }
    return dfs(A.Left,B.Left) && dfs(A.Right,B.Right)
}

标签:26,Right,return,nil,Offer,子结构,dfs,TreeNode
From: https://www.cnblogs.com/lxing-go/p/17660508.html

相关文章

  • 剑指Offer 27. 二叉树的镜像
    题目链接:剑指Offer27.二叉树的镜像题目描述:请完成一个函数,输入一个二叉树,该函数输出它的镜像。解法思路:此题本质上就是一个二叉树遍历的问题:在遍历的过程中,交换左右子树即可。代码:/***Definitionforabinarytreenode.*typeTreeNodestruct{*Valint......
  • 剑指Offer 25. 合并两个排序的链表
    题目链接:剑指Offer25.合并两个排序的链表题目描述:输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。解法思路:在两链表向后遍历的过程中,哪个更小一点,哪个先放在合并后的链表中。最后哪个链表剩余,直接接在合并链表的后面即可。代码:/***Definit......
  • 8.26 后记
    ......
  • 剑指Offer 22. 链表中倒数第k个节点
    题目链接:剑指Offer22.链表中倒数第k个节点题目描述:输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。解法思路:快慢指针:慢指针不动,快指针先走k步,然后快慢指针一起向后走,当快指针走到末尾时,慢指针所指的就是倒......
  • 「算法与数据结构」梳理6大排序算法 为了offer!
    6种排序如下......
  • [算法学习笔记][刷题笔记] 2023/8/26&8/27 解题报告状压 dp
    题单状压dp状压dp是一种非常暴力的算法,它直接记录不同的状态,通过状态进行转移。状压dp可以解决NP类问题。它的原理是暴力枚举每一种可能的状态。所以它的复杂度是指数级的。只能求解小范围的问题。关于记录状态:状压dp通过一个二进制串来记录状态。显然二进制串可以转......
  • 「Log」2023.8.26 小记
    序幕起晚了,干脆破罐子破摔,晚点到。八点前到校,被教练投喂雪糕。水两道红题,选笔记本巴拉巴拉。讲题讲题胡题。吃饭。讲题讲题胡题。摆。摆。摆。摆。摆。摆。摆。摆。摆。......
  • 2023.8.26周进度
    主要进行暑期社会实践调查报告周日,完善上一周写的社会实践调查报告。周四,中间这几天拖拖沓沓,写的时候才发现没带纸。周五,进行调查报告的誊写,完成纸上抄写调查报告。周六,写一下每周的进度博客,主要进行了调查报告的完善和抄写......
  • 「算法与数据结构」梳理6大排序算法 为了offer!
    6种排序如下......
  • [20230826]dc命令复杂学习2.txt
    [20230826]dc命令复杂学习2.txt--//昨天做了累加的例子,并解析命令里面的意思.今天尝试做一个阶乘的例子.$seq5|dc-f--e"[*z1<r]srz1<rp"120--//很简单就是里面的+换成了*,实际上我使用seq5传了5个参数.如果传入1个呢?--//假设做10的阶乘.$echo10*9*8*7*6*5*4*3*2*1|......