栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

二叉树创建 & 遍历

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

二叉树创建 & 遍历

层次创建

参考:Python --- 二叉树的层序建立

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

def creatTree(nodeList):
    if nodeList[0] == None:  return None
    head = TreeNode(nodeList[0])
    nodes = [head] # 用于存放树中的节点,每生成一个节点就将其放入该列表中,此处将根节点存入。
    j = 1  # 创建变量j用于nodeList中元素的索引,初始为1.因为第0个元素已经创建根节点了。
    for node in nodes:  # 依次取出Nodes列表中的节点,对其创建左子节点和右子节点
        if node != None:
            node.left = (TreeNode(nodeList[j])) if nodeList[j] != None else None
            nodes.append(node.left) # 将新建的节点加入Nodes数组,使其在for循环中可以继续为其添加子节点
            j += 1
            if j == len(nodeList): # 如果与nodeList值相等说明全部节点已经添加完毕了,直接返回head根节点就完成了树的建立
                return head
            
            node.right = (TreeNode(nodeList[j])) if nodeList[j] != None else None
            j += 1
            nodes.append(node.right)
            if j == len(nodeList):
                return head
a = [1,2,3,4,None,6,7]
a = creatTree(a)

# 使用:返回二叉树最长路径,Leecode 124
class Solution:
    def __init__(self):
        self.maxSum = float("-inf")
    def maxPathSum(self, root: TreeNode) -> int:
        def maxGain(node):
            if not node:
                return 0
            leftGain = max(maxGain(node.left), 0)
            rightGain = max(maxGain(node.right), 0)
         
            priceNewpath = node.val + leftGain + rightGain

            self.maxSum = max(self.maxSum, priceNewpath)
            return node.val + max(leftGain, rightGain)
        maxGain(root)
        return self.maxSum

s = Solution()
s.maxPathSum(a)

Continue...... 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1004907.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号