leetcode 算法题543 (简单138) 二叉树的直径
- 题目介绍
给定一棵二叉树,
你需要计算它的直径长度。
一棵二叉树的直径长度是任意两个结点路径长度中的最大值。
这条路径可能穿过根结点。
- 示例
给定二叉树
1 / \ 2 3 / \ 4 5
返回 3, 它的长度是路径 [4,2,1,3] 或者 [5,2,1,3]。
- 注意:
两结点之间的路径长度是以它们之间边的数目表示。
- 解法一
/**
* Definition for a binary tree node.
* function TreeNode(val) {
* this.val = val;
* this.left = this.right = null;
* }
*/
/**
* @param {TreeNode} root
* @return {number}
*/
var diameterOfBinaryTree = function(root) {
if(!root) {
return 0;
}
return findMaxDiameter(root)['max'] - 1;
};
const findMaxDiameter = (node) => {
let lDepth = {depth: 0, max: 0}, rDepth = {depth: 0, max: 0};
if(node.left) {
lDepth = findMaxDiameter(node.left);
}
if(node.right) {
rDepth = findMaxDiameter(node.right);
}
let max = Math.max(lDepth.max, rDepth.max, lDepth.depth + rDepth.depth + 1);
let depth = Math.max(lDepth.depth, rDepth.depth) + 1;
return {max, depth}
}
执行用时 : 76 ms, 在所有 JavaScript 提交中击败了99.47%的用户
内存消耗 : 37.4 MB, 在所有 JavaScript 提交中击败了25.00%的用户