문제 링크: https://leetcode.com/problems/increasing-order-search-tree/
아래와 같은 TreeNode
로 구성된 Binary Search Tree를 in-order로 정렬된 오른쪽 자식만 있는 트리로 변형하는 문제이다.
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;
}
}
Binary Search Tree가 주어졌으니 그냥 inorder traversal로 순회하면서 루트 값으로 새로운 트리를 만들어주면 된다.
class Solution {
public void InorderTraversal(TreeNode result, TreeNode root) {
if(root.left != null) InorderTraversal(result, root.left);
result.right = new TreeNode();
result = result.right;
result.val = root.val;
if(root.right != null) InorderTraversal(result, root.right);
}
public TreeNode increasingBST(TreeNode root) {
if(root == null) return null;
TreeNode increasingSearchTree = new TreeNode();
TreeNode result = increasingSearchTree;
InorderTraversal(result, root);
return increasingSearchTree.right;
}
}
in-order로 잘 순회하고 있었으나 ~~~ 해서 아래와 같은 결과를 반환하고 있었다.
포인터를 잘못 쓰고 있는 것 같은데 .. ㅡㅡ