이진 트리의 직경

3409 단어 leetcodejavascript
이진 트리의 루트가 주어지면 트리 지름의 길이를 반환합니다.

이진 트리의 지름은 트리의 두 노드 사이에서 가장 긴 경로의 길이입니다. 이 경로는 루트를 통과하거나 통과하지 않을 수 있습니다.

두 노드 사이의 경로 길이는 두 노드 사이의 에지 수로 표시됩니다.

예 1:


입력: 루트 = [1,2,3,4,5]
출력: 3
설명: 3은 경로 [4,2,1,3] 또는 [5,2,1,3]의 길이입니다.

/**
 * @param {TreeNode} root
 * @return {number}
 */
var diameterOfBinaryTree = function (root) {
  let max = 0;

  function maxDepth(root) {
    if (root === null) return 0; // if our root(num) is null then there is no path. return 0/null
    let left = maxDepth(root.left); // Assign the left  of tree to LEFT; this will be easier to call it instead of writing "maxDepth(root.left)" each time
    let right = maxDepth(root.right); //Same above

    max = Math.max(max, left + right); //if the path doesn't go through the root we just get the max of them
    return Math.max(left, right) + 1; // the path goes through the root so we add 1(for the root)
  }
  //since we don't know if the path will go through the root or not we will have to get the max between(path that visits the root, or the path that doesn't go through the root.)
  maxDepth(root);
  return max;
};

좋은 웹페이지 즐겨찾기