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

    1. 1<br /> / \<br /> 2 3<br /> / \ <br /> 4 5 <br />返回 3, 它的长度是路径 [4,2,1,3] 或者 [5,2,1,3]。

    注意:两结点之间的路径长度是以它们之间边的数目表示。

    /**
     * Definition for a binary tree node.
     * function TreeNode(val, left, right) {
     *     this.val = (val===undefined ? 0 : val)
     *     this.left = (left===undefined ? null : left)
     *     this.right = (right===undefined ? null : right)
     * }
     */
    /**
     * @param {TreeNode} root
     * @return {number}
     */
    var diameterOfBinaryTree = function (root) {
        let maxDiameter = 0
        const maxDepth = (root) => {
            if (!root) return 0
    
            let leftLength = maxDepth(root.left);
            let rightLength = maxDepth(root.right);
            maxDiameter = Math.max(leftLength + rightLength, maxDiameter);
            return 1 + Math.max(leftLength, rightLength)
        }
        maxDepth(root);
    
        return maxDiameter
    };
    

    image.png