leetcode解题之543. Diameter of Binary Tree Java版 (二叉树的最大直径)
2017-03-25 08:45
477 查看
543. Diameter of Binary Tree
Given a binary tree, you need to compute the length of the diameter of the tree. The diameter of a binary tree is the length of thelongest path between any two nodes in a tree. This path may or may not pass throughthe root.
Example:
Given a binary tree
1 / \ 2 3 / \ 4 5
Return 3, which is the length of the path [4,2,1,3] or [5,2,1,3].
Note:The length of path between two nodes is represented by the number of edges between them.
二叉树的直径:二叉树中从一个结点到另一个节点最长的路径,叫做二叉树的直径
采用分治和递归的思想:根节点为root的二叉树的直径 = Max(左子树直径,右子树直径,左子树的最大深度(不包括根节点)+右子树的最大深度(不包括根节点)+1)
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ public class Solution { // 全局变量,记录最大直径 int diameter = 0; public int diameterOfBinaryTree(TreeNode root) { getDepth(root); return diameter; } // 此函数是返回树的最大深度 private int getDepth(TreeNode root) { if (root == null) return 0; int l = getDepth(root.left); int r = getDepth(root.right); diameter = Math.max(diameter, l + r); return Math.max(l, r) + 1; } }
相关文章推荐
- leetcode解题之124. Binary Tree Maximum Path Sum Java版 (二叉树的最大路径和)
- Leetcode 654. Maximum Binary Tree 最大二叉树 解题报告
- Leetcode 104. Maximum Depth of Binary Tree 二叉树的最大高度 解题报告
- leetCode 104.Maximum Depth of Binary Tree(二叉树最大深度) 解题思路和方法
- leetCode 104.Maximum Depth of Binary Tree(二叉树最大深度) 解题思路和方法
- Leetcode Maximum Depth of Binary Tree 二叉树最大深度
- leetCode 32.Longest Valid Parentheses (有效的最大括号) 解题思路和方法
- [LeetCode系列] 二叉树最大深度求解问题(C++递归解法)
- LeetCode | Binary Tree Maximum Path Sum(二叉树的路径最大值)
- leetCode解题报告之O(n)线性时间求最大子序列和(Maximum Subarray)
- leetCode 111.Minimum Depth of Binary Tree(二叉树最小深度) 解题思路和方法
- [leetcode]Maximum Depth of Binary Tree (求二叉树的最大深度 C语言)
- LeetCode----Maximum Depth of Binary Tree 求二叉树最大深度
- LeetCode—二叉树的最大最小深度
- leetCode 102.Binary Tree Level Order Traversal (二叉树水平遍历) 解题思路和方法
- leetCode 103.Binary Tree Zigzag Level Order Traversal (二叉树Z字形水平序) 解题思路和方法
- leetCode 53.Maximum Subarray (子数组的最大和) 解题思路方法
- LeetCode(Binary Tree Maximum Path Sum) 在二叉树中找出一条和最大的路径
- 【leetcode Java】二叉树的递归遍历以及最大深度的求解(Java)
- LeetCode-Binary Tree Maximum Path Sum-二叉树最大路径和-DFS