543. 이진 트리의 지름

설명:



이진 트리가 주어지면 트리 지름의 길이를 계산해야 합니다. 이진 트리의 지름은 트리의 두 노드 사이에서 가장 긴 경로의 길이입니다. 이 경로는 루트를 통과할 수도 있고 통과하지 않을 수도 있습니다.

해결책:



시간 복잡도 : O(n)
공간 복잡도: O(n)

// Depth first search approach
var diameterOfBinaryTree = function(root) {
    let diameter = 0;
    dfs(root);
    return diameter;

    function dfs(node) {
        if (!node) return 0;

        const left = dfs(node.left);
        const right = dfs(node.right);

        // update diameter at every node
        diameter = Math.max(diameter, left + right);

        // update the max path of the current node
        // 1 is the height of the node itself + longest path of children
        return 1 + Math.max(left, right);
    } 
};

좋은 웹페이지 즐겨찾기