Leetcode Java Minimum Distance Between BST Nodes
업데이트:
문제
코드
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
class Solution {
private int min = Integer.MAX_VALUE;
private int pre = -1;
public int minDiffInBST(TreeNode root) {
if (root.left != null) {
this.minDiffInBST(root.left);
}
if (this.pre != -1) {
this.min = Math.min(this.min, root.val - this.pre);
}
this.pre = root.val;
if (root.right != null) {
this.minDiffInBST(root.right);
}
return this.min;
}
}
결과
설명
-
이진 탐색 트리(BST)인 root를 이용하여 인접한 두 노드 간 값의 차이가 가장 작은 값을 구하는 문제이다.
- 문제 풀이에 필요한 전역 변수를 정의한다.
- min은 최솟값을 저장하기 위한 변수로, 정수의 가장 큰 값을 넣어준다.
- pre는 이전 값을 임시 저장할 변수로, val 값의 범위에 존재하지 않는 -1로 초기화한다.
-
root의 left TreeNode가 null이 아닌 경우, root의 left TreeNode를 이용하여 재귀 호출을 수행한다.
-
pre의 값이 -1이 아닌 경우, min에 min과 root의 val 값과 pre의 차이 중 작은 값을 저장한다.
-
pre에 root의 val 값을 넣어 값을 임시 저장한다.
-
root의 right TreeNode가 null이 아닌 경우, root의 right TreeNode를 이용하여 재귀 호출을 수행한다.
- 반복이 완료되면 인접한 두 노드 간 값의 차이가 가장 작은 값을 저장한 min을 주어진 문제의 결과로 반환한다.
소스
Sample Code는 여기에서 확인 가능합니다.
댓글남기기