Leetcode 1522. Diameter of N-Ary Tree [Python]

news/2024/11/29 4:53:05/

对于普通二叉树的diameter。
543. Diameter of Binary Tree
543. https://leetcode.com/problems/diameter-of-binary-tree/

# 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 diameterOfBinaryTree(self, root: Optional[TreeNode]) -> int:self.res = 0if not root:return self.resself.getdia(root)return self.resdef getdia(self, root):if not root:return 0left = self.getdia(root.left)right = self.getdia(root.right)self.res = max(self.res, left + right)return 1 + max(left, right)

换到这题,多了很多子树,那其实思路一样,只要维护全局最大值,并且选择最长的两个子树的路径长度加起来就好。用heap实现;注意判断heap里有没有东西。

"""
# Definition for a Node.
class Node:def __init__(self, val=None, children=None):self.val = valself.children = children if children is not None else []
"""class Solution:def diameter(self, root: 'Node') -> int:""":type root: 'Node':rtype: int"""if not root:return 0self.res = float('-inf')self.getdia(root)return self.resdef getdia(self, root):if not root:return 0heap = []for child in root.children:temp = self.getdia(child)heapq.heappush(heap, -temp)first = 0second = 0if heap:first = -1*heapq.heappop(heap)if heap: second = -1*heapq.heappop(heap)self.res = max(self.res, first + second)return 1 + first

http://www.ppmy.cn/news/280934.html

相关文章

洛谷P1522 Floyd求全源最短路

分析发现:连边前后 两个联通块本身的直径不被影响 题意所求可以转化为:第一个连通块最大直径 加连边距离 加第二个连通块最大直径 思路如下: 1.Floyd算法分别求出两个牧场内任意两点的距离 2.对两个牧场分别预处理maxd[i] 意为在该牧场内 与i点联通且距离i点最远的距…

P1522 [USACO2.4]牛的旅行 Cow Tours

P1522 [USACO2.4]牛的旅行 Cow Tours 思路 牧区可以抽象成图上每一个点牧场可以看作连通块新牧场的最大直径两点到未连通前两个牧场的最大距离(保证满足题意:一个牧场的直径就是牧场中最远的两个牧区的最短距离)两点之间最短距离 实现 邻…

国际电商网站APP开发-国际电商网站,跨境方案

跨境电商一种在国际贸易中进行电子商务的策略。它涉及到在线销售产品或服务给海外消费者,通常涉及到国际支付、物流和海外市场营销的问题。以下是一些跨境电商方案的例子: 跨境电商平台:建立自己的跨境电商平台,提供海外消费者便捷…

[P1522]牛的旅行

原题链接 又是 01之间不打空格的输入 又是 我最讨厌的字符串 设计输入格式的人 为什么这么 讨厌空格呢 先跑一遍Floyd 找出哪几个点不在一个牧区内 然后看 连接哪两个点最路径最短 这个题的难度评级 为什么会这么高呢 #include<iostream> #include<cstd…

LeetCode 1522. N 叉树的直径

LeetCode 1522. N 叉树的直径 文章目录 LeetCode 1522. N 叉树的直径题目描述一、解题关键词二、解题报告1.思路分析2.时间复杂度3.代码示例2.知识点 总结相同题目 题目描述 给定一棵 N 叉树的根节点 root &#xff0c;计算这棵树的直径长度。 N 叉树的直径指的是树中任意两个节…

jzoj P1522 无线网络

题目大意&#xff1a; 一个由n台计算机组成的无线网络,每台计算机都能跟与它距离不超过d的任何计算机通讯。地震时&#xff0c;所有计算机都瘫痪了。在修复的过程中&#xff0c;他们需要测试一下某两台计算机能否通讯&#xff08;如果他们能通过别的正常的计算机进行通讯&…

51Nod - 1522 区间dp

题意&#xff1a; 题目链接&#xff1a;https://www.51nod.com/onlineJudge/questionCode.html#!problemId1522 思路&#xff1a; 很好的区间dp。 从1开始填起&#xff0c;两个1能存在的位置分别是1和2&#xff0c;1和2*n&#xff0c;2*n-1和2*n。根据每种不同的填法&#x…

LeetCode 1522. Diameter of N-Ary Tree(递归)

文章目录 1. 题目2. 解题 1. 题目 Given a root of an N-ary tree, you need to compute the length of the diameter of the tree. The diameter of an N-ary tree is the length of the longest path between any two nodes in the tree. This path may or may not pass th…