首页 > 其他分享 >Study Plan For Algorithms - Part20

Study Plan For Algorithms - Part20

时间:2024-09-02 12:25:56浏览次数:12  
标签:node right return val Study Part20 Algorithms self left

1. 树的子结构
输入两棵二叉树A和B,判断B是不是A的子结构。
方法一:

class TreeNode:
    def __init__(self, val=0, left=None, right=None):
        self.val = val
        self.left = left
        self.right = right

def isSubStructure(A, B):
    if not A or not B:
        return False
    return isSameTree(A, B) or isSubStructure(A.left, B) or isSubStructure(A.right, B)

def isSameTree(A, B):
    if not B:
        return True
    if not A:
        return False
    if A.val!= B.val:
        return False
    return isSameTree(A.left, B.left) and isSameTree(A.right, B.right)

方法二:

class TreeNode:
    def __init__(self, val=0, left=None, right=None):
        self.val = val
        self.left = left
        self.right = right

def isSubStructure(A, B):
    def dfs(node_A, node_B):
        if not node_B:
            return True
        if not node_A or node_A.val!= node_B.val:
            return False
        return dfs(node_A.left, node_B.left) and dfs(node_A.right, node_B.right)

    if not A or not B:
        return False

    stack_A = [A]
    while stack_A:
        node = stack_A.pop()
        if node.val == B.val and dfs(node, B):
            return True
        if node.left:
            stack_A.append(node.left)
        if node.right:
            stack_A.append(node.right)
    return False

标签:node,right,return,val,Study,Part20,Algorithms,self,left
From: https://blog.csdn.net/qq_24058289/article/details/141792914

相关文章

  • Study Plan For Algorithms - Part18
    1.搜索插入位置题目链接:https://leetcode.cn/problems/search-insert-position/给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。classSolution:defsearchInsert(self,nums:List[int],target:......
  • COMP20003 Algorithms and Data Structures Spellcheck Lookup
    Assignment2:SpellcheckLookupGeneralYoumustreadfullyandcarefullytheassignmentspecificationandinstructions.Course:COMP20003AlgorithmsandDataStructures@Semester2,2024DeadlineSubmission:Friday6thSeptember2024@11:59pm(endo......
  • Study Plan For Algorithms - Part16
    1.下一个排列题目链接:https://leetcode.cn/problems/next-permutation/整数数组的一个排列就是将其所有成员以序列或线性顺序排列。整数数组的下一个排列是指其整数的下一个字典序更大的排列。更正式地,如果数组的所有排列根据其字典顺序从小到大排列在一个容器中,那么数组......
  • PHPStudy 面板在使用过程中可能会遇到各种错误
    面板在使用过程中可能会遇到各种错误。这里列出一些常见的问题及其解决方法:启动问题启动失败描述:面板启动时失败,无法正常工作。解决方法:检查面板的日志文件,查找启动失败的具体原因。确认服务器资源是否足够。重新安装或更新到最新版本的PHPStudy。网站问题网......
  • Study Plan For Python - Part4
    格式化输出1.reprlib模块提供了一个定制化版本的repr()函数,用于缩略显示大型或深层嵌套的容器对象importreprlibreprlib.repr(set('fantabulouslywonderificentamazingness'))#可迭代对象,输出"{'a','b','c','d','e','f',.......
  • Study Plan For Algorithms - Part11
    1.合并两个有序链表题目链接:https://leetcode.cn/problems/merge-two-sorted-lists/将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。classSolution:defmergeTwoLists(self,list1:Optional[ListNode],list2:Option......
  • Study Plan For Algorithms - Part8
    1.三数之和题目链接:https://leetcode.cn/problems/3sum/给定一个整数数组nums,判断是否存在三元组[nums[i],nums[j],nums[k]]满足i!=j、i!=k且j!=k,同时还满足nums[i]+nums[j]+nums[k]==0。返回所有和为0且不重复的三元组。classSolution:deft......
  • A Comparative Study of AI-Generated (GPT-4) and Human-crafted MCQs in Programmin
    文章目录题目摘要引言相关工作数据集MCQ生成提示实验设计结果讨论对教学实践的启示有效性的局限性和威胁结论和未来工作题目编程教育中人工智能生成的(GPT-4)和人类编写的MCQ的比较研究论文地址:https://dl.acm.org/doi/10.1145/3636243.3636256摘要    ......
  • Study Plan For Algorithms - Part7
    1.罗马数字转整数题目链接:https://leetcode.cn/problems/roman-to-integer/罗马数字包含以下七种字符:I,V,X,L,C,D和M。字符数值I1V5X10L50C100D500M1000通常情况下,罗马数字中小的数字在大的数字的右边。但也存在六种特例:I可以放在......
  • [PHP GD Study]我的世界皮肤转迷你世界
    涉及图片旋转、放大、复制目前仅实现了头部的复制准备工作:迷你世界皮肤底图(命名为miniw.png):我的世界皮肤:源代码:⚠AI生成<?php//设置上传文件的目标目录$target_dir="uploads/";//创建目标目录如果不存在if(!file_exists($target_dir)){mkdir($target_di......