首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

二叉树的直径

题目大意 https://leetcode-cn.com/problems/diameter-of-binary-tree/description/ 给定一棵二叉树,你需要计算它的直径长度。...一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过根结点。...解题思路 二叉树的直径:二叉树中从一个结点到另一个节点最长的路径,叫做二叉树的直径 采用分治和递归的思想:根节点为root的二叉树的直径 = max(root-left的直径,root->right的直径...,root->left的最大深度+root->right的最大深度+1) 分两种情况,1,最大直径经过根节点,则直径为左子树最大深度+右子树最大深度 2.如果不经过根节点,则取左子树或右子树的最大深度...root.right) self.ans = max(self.ans, left + right) return max(left, right) + 1

87910
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    LeetCode-543-二叉树的直径

    # LeetCode-543-二叉树的直径 给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过也可能不穿过根结点。...示例1: 给定二叉树 1 / \ 2 3 / \ 4 5 返回 3, 它的长度是路径 [4,2,1,3...] 或者 [5,2,1,3]。...**注意:**两结点之间的路径长度是以它们之间边的数目表示。 # 解题思路 方法1、DFS: 二叉树的直径是不一定经过root节点的,可能存在于每个子树中,所以需要遍历每个节点的左右子树深度。...动态记录最大的直径 直径 = max(左子树深度+右子树深度) 某节点子树的深度 = max(某节点左子树深度,某节点右子树深度)+1 # Java代码 /** * Definition for a

    22110

    LeetCode-543-二叉树的直径

    # LeetCode-543-二叉树的直径 给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过也可能不穿过根结点。...示例1: 给定二叉树 1 / \ 2 3 / \ 4 5 返回 3, 它的长度是路径 [4,2,1,3...] 或者 [5,2,1,3]。...**注意:**两结点之间的路径长度是以它们之间边的数目表示。 # 解题思路 方法1、DFS: 二叉树的直径是不一定经过root节点的,可能存在于每个子树中,所以需要遍历每个节点的左右子树深度。...动态记录最大的直径 直径 = max(左子树深度+右子树深度) 某节点子树的深度 = max(某节点左子树深度,某节点右子树深度)+1 # Java代码 /** * Definition for a

    20010

    二叉树的直径(LeetCode 543)

    文章目录 1.问题描述 2.难度等级 3.热门指数 4.解题思路 参考文献 1.问题描述 给你一棵二叉树的根节点,返回该树的直径 。 二叉树的 直径 是指树中任意两个节点之间最长路径的长度 。...所以解决该题需要先知道如何求解二叉树的高度。 如果我们知道了左子树和右子树的最大深度 l 和 r,那么该二叉树的最大深度即为:max(l,r)+1。...具体而言,在计算当前二叉树的最大深度时,可以先递归计算出其左子树和右子树的最大深度,然后在 O(1) 时间内计算出当前二叉树的最大深度。递归在访问到空节点时退出。...时间复杂度: O(n),其中 n 为二叉树的结点数,即遍历一棵二叉树的时间复杂度,每个结点只被访问一次。 空间复杂度: 递归函数分配栈空间为 O(logn),即二叉树的高度。...二叉树的直径- LeetCode

    14410

    【每日leetcode】25.二叉树的直径

    可以将二叉树的直径转换为:二叉树的每个节点的左右子树的高度和的最大值。 ——leetcode此题热评 前言 哈喽,大家好,我是一条。 糊涂算法,难得糊涂 Question 543....二叉树的直径 难度:简单 给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过也可能不穿过根结点。 示例 : ?...返回 3, 它的长度是路径 [4,2,1,3] 或者 [5,2,1,3]。 注意:两结点之间的路径长度是以它们之间边的数目表示。...先递归调用左儿子和右儿子求得它们为根的子树的深度 L和 R,则该节点为根的子树的深度即为max(L,R)+1 递归搜索每个节点返回最大值即可。...(左子树深度+右子树深度)当前最大值比较并取大者 return Math.max(Left,Right)+1;//返回节点深度 } } Result 复杂度分析 时间复杂度:

    46460

    二叉树的直径

    一、题目 给你一棵二叉树的根节点,返回该树的 直径 。 二叉树的 直径 是指树中任意两个节点之间最长路径的 长度 。这条路径可能经过也可能不经过根节点 root 。...二、示例 2.1> 示例 1: 图片 【输入】root = [1,2,3,4,5] 【输出】3 【解释】3 ,取路径 [4,2,1,3] 或 [5,2,1,3] 的长度。...2.2> 示例 2: 【输入】root = [1,2] 【输出】1 提示: 树中节点数目在范围 [1, 10^4] 内 -100 <= Node.val <= 100 三、解题思路 根据题目描述,我们要获得二叉树中任意两个节点的最大直径...所以,我们得出一个结论: 可能的最大直径 = leftNode到rootNode的距离 + rootNode到rightNode的距离; 那么,因为二叉树也并不只有3个节点,如果节点很多的话,那么这个二叉树的层级也就会越深...以上就是本题的解题思路,为了便于大家更加深入的理解,下面我们以输入root = [1,2,3,4,5]为例,看一下是如何进行最大直径计算的(图中省略了根节点的深度和直径的计算,大家自行脑补即可),请见下图所示

    76250

    ​LeetCode刷题实战543:二叉树的直径

    今天和大家聊的问题叫做 二叉树的直径,我们先来看题面: https://leetcode-cn.com/problems/diameter-of-binary-tree/ Given the root...给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过也可能不穿过根结点。...(root->right))+1; } void preOrder(TreeNode *root)//遍历每个节点,把遍历到的每个节点作为根节点 { if (!...,左右深度相加即为当前子树的直径,遍历完每一棵子树后最大的那个直径即为二叉树的直径。...right_depth+1); } }; 好了,今天的文章就到这里,如果觉得有所收获,请顺手点个在看或者转发吧,你们的支持是我最大的动力 。

    22110

    树的直径

    0 4 50 Sample Output Case 1: 100 Case 2: 80 这个题刚开始一直不理解,可能是对树的的直径比较陌生吧,可后来看看了看学长给我板子。...只要从任意一个节点出发然后找到距离他最远的节点,然后再让这个最远的出发去找距离这个最远的,这两个节点的距离就是树的直径!...从图中,你可以看到计算机4离1最远,所以s1=3。计算机4和5是距离2最远的,所以s2=2。计算机5是离3最远的,所以s3=3。我们也得到了s4=4,s5=4。...输入行中的数字用空格分隔。 输出 对于每组样例,输出n行。第i行第i台计算机的到其他计算机的最大长度Si(11最远,所以s1=3。计算机4和5是距离2最远的,所以s2=2。计算机5是离3最远的,所以s3=3。我们也得到了s4=4,s5=4。

    44020

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭
      领券