代码随想录第十四天刷题

class Solution:
    def invertTree(self, root: Optional[TreeNode]) -> Optional[TreeNode]:
        if not root:
            return None
        root.left, root.right = root.right, root.left
        self.invertTree(root.left)
        self.invertTree(root.right)

        return root
# ---------- 类内部调用 ----------
# 在类内部:
# 调用自己的方法,必须用 self.方法名()
#
# 为什么?
# 因为 def 定义在类里
# 调用时要用“对象.方法”的形式
# 在内部,对象 = self
#在类外部就得使用
#s = Solution()
#s.invertTree(root)
class Solution:
    def isSymmetric(self, root: Optional[TreeNode]) -> bool:
        if not root:
            return True
        return self.compare(root.left, root.right)
    def compare(self, left, right):
        if left == None and right != None: return False
        elif left != None and right == None: return False
        elif left == None and right == None: return True
        elif left.val != right.val: return False

        outside = self.compare(left.left, right.right)
        inside = self.compare(left.right, right.left)
        isSame = outside and inside
        return isSame
		
		
# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def maxDepth(self, root: Optional[TreeNode]) -> int:
        return self.getdepth(root)

    def getdepth(self, node):
        if not node:
            return 0
        
        leftheight = self.getdepth(node.left)
        rightheight = self.getdepth(node.right)
        height = 1 + max(leftheight, rightheight)
        return height
#求二叉树的深度用后序遍历
#		高度-前序遍历

返回值,参数:

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def minDepth(self, root: Optional[TreeNode]) -> int:
        return self.getDepth(root)
    def getDepth(self, node):
        if node is None:
            return 0
        leftDepth = self.getDepth(node.left)
        rightDepth = self.getDepth(node.right)

        if node.left is None and node.right is not None:
            return 1 + rightDepth

        if node.left is not None and node.right is None:
            return 1 + leftDepth
        
        result = 1 + min(leftDepth, rightDepth)
        return result

#注意给出的函数体不能修改
    

        

全部评论

相关推荐

感觉自己好菜、面试很难,还是要多多练习,感觉自己说不明白业务逻辑1.提示词模板(PromptTemplate)的设计原则是什么?在复杂任务场景下如何设计可复用、可扩展的Prompt结构?如何评估Prompt对模型输出质量的影响?2.在Agent架构中,单Agent与多Agent的设计权衡是什么?多Agent系统中任务如何拆分?子Agent之间如何进行协作、通信与状态管理?3.分支覆盖率(BranchCoverage)的统计原理是什么?代码覆盖率工具是如何通过代码插桩(Instrumentation)实现覆盖率统计的?编译期插桩和运行期插桩有什么区别?4.在代码生成或自动单测生成场景中,代码解析是否需要前置静态分析?如何利用AST、CFG或数据流分析判断生成测试用例的有效性?5.如果需要优化代码测试覆盖率相关指标(如分支覆盖率、路径覆盖率、MutationScore),你会如何设计自动评估与优化策略?6.在自动生成单元测试的过程中,哪些类型的代码结构会显著降低模型生成测试用例的准确率或覆盖率?如何设计规则或模型来过滤无法自动生成单测的代码?7.对于AST和LSP无法正确解析或分析的代码结构,如何设计降级策略或fallback机制?8.在自动生成单测时,Mock机制是如何实现的?Mock框架底层是如何拦截函数调用或依赖注入的?9.多维度查询改写(QueryRewriting)通常包括哪些维度?在用户查询信息不足时,如何设计交互机制让用户参与补充信息?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务