Leetcode Java Flatten Binary Tree to Linked List
업데이트:
문제
코드
/**
* 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;
}
}
결과
설명
-
주어진 TreeNode의 val 값을 이용하여 우측으로 정렬된 TreeNode로 변경하는 문제이다.
-
재귀 호출을 이용하여 주어진 TreeNode인 root와 임시 변수인 temp를 이용하여 우측으로 정렬된 TreeNode로 변경하여 주어진 문제를 해결한다.
- treeNode가 null인 경우 마지막 노드이므로, temp를 반환한다.
- treeNode의 right TreeNode에 treeNode의 right TreeNode와 temp로 재귀 호출한 결과를 다시 treeNode의 left TreeNode와 재귀 호출한 결과를 넣어준다.
- TreeNode의 left TreeNode는 값을 제거해야 하므로, null을 넣어준다.
- 위의 단계를 수행하고 treeNode를 반환해준다.
소스
Sample Code는 여기에서 확인 가능합니다.
댓글남기기