算法训练第十五天

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)
相关推荐
shengli722几秒前
机器学习与人工智能
jvm·数据库·python
老鼠只爱大米4 分钟前
LeetCode经典算法面试题 #108:将有序数组转换为二叉搜索树(递归分治、迭代法等多种实现方案详解)
算法·leetcode·二叉树·二叉搜索树·平衡树·分治法
2301_765703149 分钟前
Python迭代器(Iterator)揭秘:for循环背后的故事
jvm·数据库·python
csbysj20209 分钟前
《Foundation 开关:深度解析其原理与应用》
开发语言
追风少年ii28 分钟前
多组学扩展---分子对接pyrosetta
python·数据分析·空间·单细胞
独自破碎E33 分钟前
【前缀和+哈希】LCR_011_连续数组
算法·哈希算法
梦里小白龙38 分钟前
java 通过Minio上传文件
java·开发语言
一条大祥脚40 分钟前
26.1.26 扫描线+数论|因子反演+子序列计数|树套树优化最短路
数据结构·算法
m0_5613596743 分钟前
基于C++的机器学习库开发
开发语言·c++·算法
2301_821369611 小时前
使用Python进行图像识别:CNN卷积神经网络实战
jvm·数据库·python