Leetcode Java Flatten Binary Tree to Linked List

업데이트:

문제

Link

코드

/**
 * 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 {

  public void flatten(TreeNode root) {
    this.recursive(root, null);
  }

  private TreeNode recursive(TreeNode treeNode, TreeNode temp) {
    if (treeNode == null) {
      return temp;
    }
    treeNode.right = this.recursive(treeNode.left, this.recursive(treeNode.right, temp));
    treeNode.left = null;
    return treeNode;
  }

}

결과

Link

설명

  1. 주어진 TreeNode의 val 값을 이용하여 우측으로 정렬된 TreeNode로 변경하는 문제이다.

  2. 재귀 호출을 이용하여 주어진 TreeNode인 root와 임시 변수인 temp를 이용하여 우측으로 정렬된 TreeNode로 변경하여 주어진 문제를 해결한다.

    • treeNode가 null인 경우 마지막 노드이므로, temp를 반환한다.
    • treeNode의 right TreeNode에 treeNode의 right TreeNode와 temp로 재귀 호출한 결과를 다시 treeNode의 left TreeNode와 재귀 호출한 결과를 넣어준다.
    • TreeNode의 left TreeNode는 값을 제거해야 하므로, null을 넣어준다.
    • 위의 단계를 수행하고 treeNode를 반환해준다.

소스

Sample Code는 여기에서 확인 가능합니다.

댓글남기기