https://leetcode.com/problems/increasing-order-search-tree/
주어진 이진탐색트리를 왼쪽 노드의 자식은 없고 오른쪽 노드의 자식만 존재하도록 트리를 순서대로 정렬하는 문제입니다.
이진탐색트리의 특징은 모든 노드의 왼쪽 노드의 값은 루트 노드보다 작으며 오른쪽 노드의 값은 루트 노드의 값 보다 큰 것입니다.
이 특징을 이용하여 노드를 순서대로 순회하게 되면 모든 값이 오름차순으로 정렬되는 것을 알 수 있습니다.
풀이
풀이는 DFS를 활용합니다.
public class IncreasingOrderSearchTree {
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 {
TreeNode prev = null, head = null;
public TreeNode increasingBST(TreeNode root) {
if(root == null) return null;
increasingBST(root.left);
if(prev != null) {
root.left = null;
prev.right = root;
}
if(head == null) head = root;
prev = root;
increasingBST(root.right);
return head;
}
}
}
'Leetcode 100문제 도전' 카테고리의 다른 글
[Leetcode 9/100] Beautiful Arrangement - Medium (0) | 2021.01.09 |
---|---|
[Leetcode 8/100] Letter Tile Possibilities - Medium (0) | 2020.08.26 |
[Leetcode 6/100] Same Tree - Easy (0) | 2020.08.25 |
[Leetcode 5/100] Roman to Integer - Easy (1) | 2020.06.29 |
[Leetcode 4/100] Palindrome Number - Easy (1) | 2020.06.28 |