543. Diameter of Binary Tree

Difficulty:
Related Topics:
Similar Questions:

Problem

Given the root of a binary tree, return **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.

The length of a path between two nodes is represented by the number of edges between them.

  Example 1:

Input: root = [1,2,3,4,5]
Output: 3
Explanation: 3 is the length of the path [4,2,1,3] or [5,2,1,3].

Example 2:

Input: root = [1,2]
Output: 1

  Constraints:

Solution

/**
 * 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) {
    return dfs(root)[0];
};

var dfs = function(node) {
    if (!node) return [0, 0];
    var left = dfs(node.left);
    var right = dfs(node.right);
    var child = Math.max(
        node.left ? left[1] + 1 : 0,
        node.right ? right[1] + 1 : 0,
    );
    var branch = (node.left ? left[1] + 1 : 0) +
        (node.right ? right[1] + 1 : 0);
    return [
        Math.max(
            left[0],
            right[0],
            branch,
        ),
        child,
    ];
};

Explain:

nope.

Complexity:

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy