题目

https://leetcode-cn.com/problems/diameter-of-binary-tree/

题解 1:暴力法

暴力解法:遍历这棵树,当以每个节点为根时,计算 距离,取最大值作为最终结果。

其中,距离 = 左 深度 + 右 深度

其中,深度的计算用 getDepth() 来定义。

/* Definition for a binary tree node. */
class TreeNode {int val;TreeNode left;TreeNode right;TreeNode() {}TreeNode(int val) { this.val = val; }TreeNode(int val, TreeNode left, TreeNode right) {this.val = val;this.left = left;this.right = right;}
}public class Solution {int max = 0;public int diameterOfBinaryTree(TreeNode root) {inOrder(root);return max;}// 先序遍历public void inOrder(TreeNode node) {if (node == null) return;int distance = getDepth(node.left, 0) + getDepth(node.right, 0);if (distance > max) max = distance;inOrder(node.left);inOrder(node.right);}// 计算当前节点为根时的树深度public int getDepth(TreeNode node, int depth) {if (node == null) return depth;else return Math.max(getDepth(node.left, depth + 1), getDepth(node.right, depth + 1));}
}

此方法效率很差

题解 2:官方题解

class Solution {int ans;public int diameterOfBinaryTree(TreeNode root) {ans = 1;depth(root);return ans - 1;}public int depth(TreeNode node) {if (node == null) {return 0; // 访问到空节点了,返回0}int L = depth(node.left); // 左儿子为根的子树的深度int R = depth(node.right); // 右儿子为根的子树的深度ans = Math.max(ans, L+R+1); // 计算d_node即L+R+1 并更新ansreturn Math.max(L, R) + 1; // 返回该节点为根的子树的深度}
}作者:LeetCode-Solution
链接:https://leetcode-cn.com/problems/diameter-of-binary-tree/solution/er-cha-shu-de-zhi-jing-by-leetcode-solution/

leetcode 543. 二叉树的直径(Java版)相关推荐

  1. Java实现 LeetCode 543 二叉树的直径

    543. 二叉树的直径 给定一棵二叉树,你需要计算它的直径长度.一棵二叉树的直径长度是任意两个结点路径长度中的最大值.这条路径可能穿过根结点. 示例 : 给定二叉树 1/ \ 2 3 / \ 4 5 ...

  2. LeetCode 543. 二叉树的直径(DFS)

    1. 题目 给定一棵二叉树,你需要计算它的直径长度.一棵二叉树的直径长度是任意两个结点路径长度中的最大值.这条路径可能穿过根结点. 示例 : 给定二叉树1/ \2 3/ \ 4 5 返回 3, 它的长 ...

  3. LeetCode 543二叉树的直径-简单

    给定一棵二叉树,你需要计算它的直径长度.一棵二叉树的直径长度是任意两个结点路径长度中的最大值.这条路径可能穿过也可能不穿过根结点. 示例 : 给定二叉树 1/ \2 3/ \ 4 5 返回 3, 它的 ...

  4. leetcode - 543. 二叉树的直径

    给定一棵二叉树,你需要计算它的直径长度.一棵二叉树的直径长度是任意两个结点路径长度中的最大值.这条路径可能穿过根结点. 示例 : 给定二叉树 解题思路:使用递归,注意递归和迭代的区别 class So ...

  5. 【LeetCode】【HOT】543. 二叉树的直径(递归)

    [LeetCode][HOT]543. 二叉树的直径 文章目录 [LeetCode][HOT]543. 二叉树的直径 package hot;class TreeNode{int val;TreeNo ...

  6. LeetCode Algorithm 543. 二叉树的直径

    543. 二叉树的直径 Ideas 这题貌似也在左神算法里见过. 基本思想就是递归,根节点从左子树获得一个想要的信息,从右子树获得一个想要的信息,然后对两个信息进行处理. 其实可以把直径分成两半看:从 ...

  7. 543. 二叉树的直径 golang

    文章目录 543. 二叉树的直径 example 正确解法 question 代码(wrong) 543. 二叉树的直径 概要: 借鉴了这个题的代码.可是有一个测试用例过不去 https://blog ...

  8. 543.二叉树的直径

    543.二叉树的直径 给定一棵二叉树,你需要计算它的直径长度.一棵二叉树的直径长度是任意两个结点路径长度中的最大值.这条路径可能穿过也可能不穿过根结点. 本题需要明确二叉树的直径计算方法: 二叉树的直 ...

  9. 543. 二叉树的直径

    543. 二叉树的直径 描述 给定一棵二叉树,你需要计算它的直径长度.一棵二叉树的直径长度是任意两个结点路径长度中的最大值.这条路径可能穿过也可能不穿过根结点. 示例 : 给定二叉树 1/ \2 3/ ...

最新文章

  1. android miui9.0改装条例,安卓的通知适配(更新至9.0)
  2. 关抢占 自旋锁_关于Redis分布式锁这一篇应该是讲的最好的了,先收藏起来再看!...
  3. Spark Streaming和Flume集成指南V1.4.1
  4. .net项目进不去后台解决
  5. Android10 root,Android Q系统Magisk完美实现ROOT
  6. linux下tar压缩使用
  7. appium工作原理及启动方式
  8. w3wp对应进程_认识w3wp.exe进程,从根本上解决占用资源较大问题
  9. 大学生创新创业计划-2020
  10. 小鹤双拼入门和小鹤音形的搜狗输入法配置方法
  11. 智慧工厂管理系统全面提升智能化水平
  12. 100个在线生信小工具
  13. html文件恢复工具,文件误删恢复工具
  14. linux命令之man及ubuntu下man
  15. 找到office16\excel.exe
  16. iOS-【转载】架构模式 - 简述 MVC, MVP, MVVM 和 VIPER
  17. pta 天梯赛的善良(C语言实现)
  18. 顺序表的基本操作C++
  19. 各种语言的特点和介绍
  20. 新手站长建站初期利于优化的网站描述

热门文章

  1. SPOJ - TOURS Travelling tours(最小费用最大流)
  2. 洛谷 - P4013 数字梯形问题(最大费用最大流+举一反三)
  3. 2018宁夏邀请赛 - Goldbach(米勒罗宾素数测试)
  4. POJ - 2689 Prime Distance(素数区间筛模板)
  5. protobuf入门教程(一):简介和安装
  6. 这两种完全不同的JPEG加载方式,你肯定见过!
  7. C语言程序设计 | 打印一个n行的菱形
  8. 科普 | CPU 是如何工作的?
  9. LiveVideoStackCon讲师热身分享 ( 二 ) —— 中美互动直播比较
  10. QUIC的前世今生——HTTP演变史