KimMinJun
Coding Note
KimMinJun
전체 방문자
오늘
어제
  • 분류 전체보기 (486)
    • ALGORITHM (11)
      • 정렬 (6)
      • 최단경로 (1)
      • 자료구조 (1)
      • 슬라이딩 윈도우 (1)
      • etc (2)
    • Git (5)
    • Web (24)
      • Vanilla JS (13)
      • TS (2)
      • React (7)
      • ETC (1)
    • React 공식문서 (번역, 공부) (11)
      • Quick Start (2)
      • Installation (0)
      • Describing the UI (9)
      • Adding Interactivity (0)
      • Managing State (0)
      • Escape Hatches (0)
    • Next.js 공식문서 (번역, 공부) (3)
      • Getting Started (2)
      • Building Your Application (1)
    • PS (431)
      • 백준 (187)
      • Programmers (104)
      • CodeUp (21)
      • STL (3)
      • 제코베 JS 100제 (50)
      • SWEA (0)
      • LeetCode (65)
    • IT (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • 관리

공지사항

인기 글

태그

  • 제코베 JS 100제
  • C
  • codeup
  • 백준
  • 다이나믹 프로그래밍
  • Level 1
  • Level1
  • string
  • 정렬
  • 수학
  • C++
  • programmers
  • recursion
  • js
  • 문자열
  • 그래프
  • Level 0
  • LeetCode
  • Level 2
  • tree

최근 댓글

최근 글

hELLO · Designed By 정상우.
KimMinJun
PS/LeetCode

LeetCode / Binary Search Tree / 235번 / Lowest Common Ancestor of a Binary Search Tree / JS

PS/LeetCode

LeetCode / Binary Search Tree / 235번 / Lowest Common Ancestor of a Binary Search Tree / JS

2023. 4. 5. 16:24

< 문제 바로가기 >

 

Lowest Common Ancestor of a Binary Search Tree - LeetCode

Can you solve this real interview question? Lowest Common Ancestor of a Binary Search Tree - Given a binary search tree (BST), find the lowest common ancestor (LCA) node of two given nodes in the BST. According to the definition of LCA on Wikipedia [https:

leetcode.com

 

< 문제 간단설명 >

TreeNode인 p와 q가 주어지는데, p와 q의 가장 가까운 공통 부모노드를 찾는 문제이다.

 

/**
 * Definition for a binary tree node.
 * function TreeNode(val) {
 *     this.val = val;
 *     this.left = this.right = null;
 * }
 */

/**
 * @param {TreeNode} root
 * @param {TreeNode} p
 * @param {TreeNode} q
 * @return {TreeNode}
 */
var lowestCommonAncestor = function(root, p, q) {
    while(root) {
        if(p.val < root.val && q.val < root.val) {
            root = root.left;
        }
        else if(p.val > root.val && q.val > root.val) {
            root = root.right;
        }
        else break;
    }

    return root;
};

생각보다 간단한 문제이다. 현재의 root의 값보다 p와 q모두 작다면 root를 root.left로 이동시켜준다.

현재의 root의 값보다 p와 q모두 크다면 root를 root.right로 이동시켜주면 된다.

 

BST의 특성상 루트의 값은 반드시 왼쪽 서브트리의 값들보다 크고 오른쪽 서브트리의 값들보다 작기 때문이다.

 

만약 두 조건 모두 걸리지 않는다면 root노드가 왼쪽과 오른쪽 사이에 잘 위치하고 있다는 뜻이므로 공통부모노드가 된다.

저작자표시 (새창열림)

'PS > LeetCode' 카테고리의 다른 글

LeetCode / Stack / 394번 / Decode String / JS  (0) 2023.04.18
LeetCode / Stack / 844번 / Backspace String Compare / JS  (0) 2023.04.18
LeetCode / Binary Search Tree / 98번 / Validate Binary Search Tree / JS  (2) 2023.04.05
LeetCode / Binary Search / 278번 / First Bad Version / JS  (0) 2023.04.05
    'PS/LeetCode' 카테고리의 다른 글
    • LeetCode / Stack / 394번 / Decode String / JS
    • LeetCode / Stack / 844번 / Backspace String Compare / JS
    • LeetCode / Binary Search Tree / 98번 / Validate Binary Search Tree / JS
    • LeetCode / Binary Search / 278번 / First Bad Version / JS
    KimMinJun
    KimMinJun

    티스토리툴바

    단축키

    내 블로그

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

    블로그 게시글

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

    모든 영역

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

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