算法训练第十五天

110.平衡二叉树

代码:

python 复制代码
# 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 isBalanced(self, root: Optional[TreeNode]) -> bool:
        ans = [True]
        a = self.find(root,ans)
        return ans[0]

    def find(self,node,ans):
        if node is None:
            return 0
        left = self.find(node.left,ans)
        right = self.find(node.right,ans)
        if abs(left-right)>1:
            ans[0] = False
        return max(left,right)+1

257.二叉树的所有路径

代码:

python 复制代码
# Definition for a binary tree node.
# class TreeNode(object):
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution(object):
    import copy
    def binaryTreePaths(self, root):
        """
        :type root: Optional[TreeNode]
        :rtype: List[str]
        """
        ans = []
        res = []
        self.find(root,res,ans)
        return ans
    
    def find(self,node,res,ans):
        res.append(str(node.val))
        if node.left is None and node.right is None:
            ans.append(copy.deepcopy('->'.join(res)))
            
            res.pop()
            return
        if node.left:
            self.find(node.left,res,ans)
        if node.right:
            self.find(node.right,res,ans)
        res.pop()

        

404.左叶子之和

代码:

python 复制代码
# Definition for a binary tree node.
# class TreeNode(object):
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution(object):
    def sumOfLeftLeaves(self, root):
        """
        :type root: Optional[TreeNode]
        :rtype: int
        """
        ans = []
        lf=False
        self.find(root,ans,lf)
        return sum(ans)

    def find(self,node,ans,lf):
        if node.left is None and node.right is None:
            if lf:
                ans.append(node.val)
        if node.left:
            self.find(node.left,ans,True)
        if node.right:
            self.find(node.right,ans,False)

222.完全二叉树的节点个数

代码:

python 复制代码
# Definition for a binary tree node.
# class TreeNode(object):
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution(object):
    def countNodes(self, root):
        """
        :type root: Optional[TreeNode]
        :rtype: int
        """
        ans = []
        self.find(root,ans)
        return len(ans)

    def find(self,node,ans):
        if node:
            ans.append(node.val)
            self.find(node.left,ans)
            self.find(node.right,ans)
相关推荐
workflower几秒前
数据分析前景
算法·数据挖掘·数据分析·需求分析·软件需求
我要学习别拦我~11 分钟前
kaggle分析项目:steam付费游戏数据分析
python·游戏·数据分析
阿鼎081512 分钟前
揭秘大语言模型:从文字到数字,token 是如何变成向量的?
人工智能·算法
GeekPMAlex14 分钟前
Conetext learning 3 KV-cache的提升
算法
大模型真好玩17 分钟前
深入浅出LangChain AI Agent智能体开发教程(四)—LangChain记忆存储与多轮对话机器人搭建
前端·人工智能·python
love530love19 分钟前
命令行创建 UV 环境及本地化实战演示—— 基于《Python 多版本与开发环境治理架构设计》的最佳实践
开发语言·人工智能·windows·python·conda·uv
陪我一起学编程41 分钟前
MySQL创建普通用户并为其分配相关权限的操作步骤
开发语言·数据库·后端·mysql·oracle
都叫我大帅哥42 分钟前
深度学习的"Hello World":多层感知机全解指南
python·深度学习
麦子邪44 分钟前
C语言中奇技淫巧04-仅对指定函数启用编译优化
linux·c语言·开发语言
都叫我大帅哥1 小时前
LangChain分层记忆解决方案:完整案例
python·langchain