543. Diameter of Binary Tree

xiaoxiao2021-02-28  107

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 the longest path between any two nodes in a tree. This path may or may not pass through the 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. 这道题求二叉树的直径,并告诉了我们直径就是两点之间的最远距离,根据题目中的例子也不难理解题意。我们再来仔细观察例子中的那两个最长路径[4,2,1,3] 和 [5,2,1,3],我们转换一种角度来看,是不是其实就是根结点1的左右两个子树的深度之和再加1呢。那么我们只要对每一个结点求出其左右子树深度之和,再加上1就可以更新结果res了。为了减少重复计算,我们用哈希表建立每个结点和其深度之间的映射,这样某个结点的深度之前计算过了,就不用再次计算了.

/** * 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; } public int getDepth(TreeNode root){ if (root == null) return -1; int left = getDepth(root.left); int right = getDepth(root.right); int temp = left + right + 2; if (temp > diameter) diameter = temp; return Math.max(left, right) + 1; } }
转载请注明原文地址: https://www.6miu.com/read-69288.html

最新回复(0)