Skip to content

Latest commit

 

History

History
64 lines (52 loc) · 1.51 KB

4.diameter-of-binary-tree.md

File metadata and controls

64 lines (52 loc) · 1.51 KB

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 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.

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) {
    return diameter(root, 0);
};

var diameter = function (node, diameterVal) {
    if (node === null) {
        return diameterVal;
    }
    let leftHeigth = heigth(node.left, 0);
    let rigthHeigth = heigth(node.right, 0);

    var diameter1 = leftHeigth + rigthHeigth;
    var maxDiameter = Math.max(diameter1, diameterVal);

    var leftDiameter = diameter(node.left, 0);
    var rigthDiameter = diameter(node.right, 0);

    return Math.max(leftDiameter, rigthDiameter, maxDiameter);
};

var heigth = function (node, heigthV) {
    if (node === null) {
        return heigthV;
    }
    ++heigthV;
    let left = heigth(node.left, heigthV);
    let rigth = heigth(node.right, heigthV);

    return Math.max(left, rigth);
};