算法训练第十五天

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)
相关推荐
7ioik29 分钟前
什么是线程池?线程池的作用?线程池的四种创建方法?
java·开发语言·spring
小曹要微笑32 分钟前
STM32H7系列全面解析:嵌入式性能的巅峰之作
c语言·stm32·单片机·嵌入式硬件·算法
寻星探路32 分钟前
JavaSE重点总结后篇
java·开发语言·算法
测试老哥33 分钟前
软件测试:测试用例的设计
自动化测试·软件测试·python·功能测试·测试工具·职场和发展·测试用例
Charles_go2 小时前
C#中级8、什么是缓存
开发语言·缓存·c#
koo3642 小时前
pytorch环境配置
人工智能·pytorch·python
松涛和鸣3 小时前
14、C 语言进阶:函数指针、typedef、二级指针、const 指针
c语言·开发语言·算法·排序算法·学习方法
yagamiraito_5 小时前
757. 设置交集大小至少为2 (leetcode每日一题)
算法·leetcode·go
程序员杰哥5 小时前
Python自动化测试之线上流量回放:录制、打标、压测与平台选择
自动化测试·软件测试·python·测试工具·职场和发展·测试用例·压力测试
吴佳浩5 小时前
LangChain v1 重大更新讲解⚠⚠⚠
python·langchain·agent