문제 풀이 방식
BST의 정렬된 특성 + inorder 재귀 구현 이용
inorder은 left -> selft -> right로 트리를 방문하므로 inorder로 트리를 순회했을 때, 순차적으로 방문할 수 있다.
주의할 점
트리 순회방식인 preorder, inorder, postorder를 이해하자
preorder : slef -> left -> right로 루트가 가장 먼저 나온다
inorder : left -> selft -> right 가장 왼쪽 노드가 먼저 나온다. (BST일 경우 정렬된 결과 볼 수 있음)
postorder : left -> right -> root 루트가 가장 늦게 나온다.
소스코드
/**
* 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 {
// inorder : left -> self -> right 로 방문하면 순서대로 나온다.
// BST의 특징은 노드를 기준으로 왼쪽은 작고 오른쪾은 크다.
int min;
int prev;
boolean flag;
public int getMinimumDifference(TreeNode root) {
min = Integer.MAX_VALUE;
inorder(root);
return min;
}
public void inorder(TreeNode root){
if(root == null) return;
inorder(root.left);
if(!flag){
flag = true;
} else {
min = Math.min(min, root.val - prev));
}
prev = root.val;
inorder(root.right);
}
}
'Leetcode 100문제 도전' 카테고리의 다른 글
[Leetcode 15/100] Course Schedule - Medium (0) | 2021.01.14 |
---|---|
[Leetcode 14/100] Find the Town Judge - Easy (0) | 2021.01.12 |
[Leetcode 12/100] Maximum Subarray - Easy (0) | 2021.01.10 |
[Leetcode 11/100] First Bad Version - Easy (0) | 2021.01.10 |
[Leetcode 10/100] Find the Smallest Divisor Given a Threshold - Medium (0) | 2021.01.10 |