본문 바로가기
TIL

[TIL] 이진트리

by chengzior 2024. 11. 19.

 

아침에 코딩

/**
 * Definition for a binary tree node.
 * class TreeNode {
 *   int val;
 *   TreeNode? left;
 *   TreeNode? right;
 *   TreeNode([this.val = 0, this.left, this.right]);
 * }
 */

TreeNode의 각 노드는 val이라는 데이터를 가지며
left, rigth를 통해 왼쪽 자식 노드와 오른쪽 자식 노드로 순회할 수 있다.

 

* 문제
주어진 이진 탐색 트리(BST)에서 특정 값을 가진 노드를 찾고, 그 노드를 루트로 하는 서브트리를 반환하는 문제입니다.
만약 값을 가진 노드가 없으면 null을 반환합니다.

* 조건
1. 트리 노드의 개수는 [1, 5000] 범위에 있습니다.
2. 각 노드의 값 Node.val은 [1, 10^7] 범위에 있습니다.
3. root는 이진 검색 트리입니다.
4. val은 [1, 10^7] 범위에 있습니다.

* 예시
예제 1
	입력: root = [4,2,7,1,3], val = 2
	출력: [2,1,3]
	설명:
		BST에서 값 2를 가진 노드를 찾고, 해당 노드를 루트로 하는 서브트리를 반환합니다.

예제 2
	입력: root = [4,2,7,1,3], val = 5
	출력: null
	설명:
		값 5는 트리에 없으므로 null을 반환합니다.

각 노드를 순회하면서 같은 값을 찾아 자식 노드를 반환해주면 되는 문제.

 

class Solution {
  TreeNode? searchBST(TreeNode? root, int val) {
    if(root==null){
        return null;
    }
    if(root.val==val){
        return root;
    }else if(root.val<val){
        return searchBST(root.right,val);
    }else{
        return searchBST(root.left,val);
    }
  }
}

 

루트 노드부터 값이 같은지 확인하고
루트 노드보다 val의 값이 작으면 왼쪽 자식 노드 순회,
크면 오른쪽 자식 노드 순회하여 반복해준다.

'TIL' 카테고리의 다른 글

팀프로젝트 시작 : 깃 다루기  (0) 2024.11.21
[TIL] 동적계획법  (0) 2024.11.20
기차표 예매 앱 만들기  (0) 2024.11.18
[TIL] 리스트 압축  (2) 2024.11.12
[TIL]플러터 기초  (0) 2024.11.11