力扣----15. 二叉树的直径(JavaScript实现)

题目描述:

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

 

示例 :
给定二叉树

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

 

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

 

JavaScript实现

思路: 求出每个节点的最大左子树高度和最大右子树高度之和的最大值

/**
 * 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) {
    let res = 0; 
    function depth(root) {
        if(!root) return 0;
        let left = depth(root.left);
        let right = depth(root.right);
        res = Math.max(res, right + left);
        return Math.max(right, left) + 1;
    }
    depth(root);
    return res
};

 

posted @ 2020-07-07 10:53  灭世的蜜糖  阅读(236)  评论(0编辑  收藏  举报