알고리즘

[LeetCode] 543 Diameter of Binary Tree JavaScript

2022. 8. 21. 10:54

문제 링크

 

Diameter of Binary Tree - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

 

문제 유형

트리, 백트래킹

 

문제 풀이

이번 문제는 트리의 지름을 구하는 문제이다. 여기서 지름(diameter)는 트리의 어떤 두 노드 사이의 가장 긴 경로의 길이를 말한다. 해당 문제는 백트래킹을 적용하여 각 노드를 post-order 순회한다. 이를 통해 각 노드의 left depth와 right depth를 구한다. 저장된 지름보다 left depth와 right depth를 합한 현재 노드의 지름이 더 크면 최대 지름을 갱신한다. 현재 노드의 최대 depth는 left depth와 right depth 중 큰 값에 1을 더한 것이 된다. 따라서 트리의 노드 개수가 n개일 때, 시간복잡도는 O(n)을 갖는다.

 

코드

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

 

참고

https://www.youtube.com/watch?v=1VNWJTbE2pM

'알고리즘' 카테고리의 다른 글

[프로그래머스] 타겟 넘버 JavaScript  (0) 2022.08.23
[LeetCode] 841 Keys and Rooms JavaScript  (0) 2022.08.22
[LeetCode] 78 Subsets JavaScript  (0) 2022.08.08
[LeetCode] 64 Minimum Path Sum JavaScript  (0) 2022.08.06
[LeetCode] 746 Min Cost Climbing Stairs JavaScript  (0) 2022.08.05
'알고리즘' 카테고리의 다른 글
  • [프로그래머스] 타겟 넘버 JavaScript
  • [LeetCode] 841 Keys and Rooms JavaScript
  • [LeetCode] 78 Subsets JavaScript
  • [LeetCode] 64 Minimum Path Sum JavaScript
sandwe
sandwe
sandwe
sandwe
sandwe
전체
오늘
어제
  • 분류 전체보기 (69)
    • CSS (1)
    • 알고리즘 (35)
    • JavaScript (30)
      • 모던 자바스크립트 Deep Dive (30)
    • React (3)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 투 포인터
  • 프로토타입
  • React Query
  • 이터러블
  • 스택
  • 해쉬 맵
  • 구조 분해 할당
  • 렌더링 과정
  • 표준 빌트인 객체
  • 알고리즘
  • BFS
  • 선언적
  • 프로그래머스
  • Subsets
  • dfs
  • 스프레드 문법
  • 이진 탐색
  • map
  • 백트래킹
  • javascript
  • string
  • float
  • Error Boundary
  • 백준
  • Suspense
  • 정렬
  • 다이나믹 프로그래밍
  • 클로저
  • Leetcode
  • 해시 테이블

최근 댓글

최근 글

hELLO · Designed By 정상우.
sandwe
[LeetCode] 543 Diameter of Binary Tree JavaScript
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.