본문 바로가기

내 맘대로 알고리즘/LeetCode 2020 June

June LeetCoding Challenge[Day1] - Invert Binary Tree

Invert Binary Tree

 

0. 이번 달 목표

 

 - 4월달부터 알고리즘을 시작했습니다.

 - 5월달에는 4월달만큼, 열심히 하지 않았습니다.

 - 열심히 하지 않았으니까, 앞으로도 열심히 하지 않을 것 같으니 6월달 목표는 하루 1문제 푸는 것만을 목표로 합니다.

 

1. 알고리즘을 해결하기 위해서 생각한 방법

 

 - node.left와 node.right를 바꿈

 - explore(node.left), explore(node.right)를 통해서 left가 head가 되고, right가 head가 되는 재귀함수를 만든다.

 

2. 알고리즘 작성 중, 어려운 점 & 깨달은 점

 

 - 없음

 

3. 내가 작성한 알고리즘

 

 

/**
 * 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 TreeNode invertTree(TreeNode root) {
        TreeNode answer =  explore(root);
        return answer;
    }
    
    private TreeNode explore(TreeNode root){
        if(root == null){
            return null;
        }
        TreeNode temp = root.right;
        root.right = root.left;
        root.left = temp;
        
        explore(root.left);
        explore(root.right);
        return root;
    }
}

 

4. 결과

 

 

문제 : https://leetcode.com/explore/featured/card/june-leetcoding-challenge/539/week-1-june-1st-june-7th/3347/

 

Explore - LeetCode

LeetCode Explore is the best place for everyone to start practicing and learning on LeetCode. No matter if you are a beginner or a master, there are always new topics waiting for you to explore.

leetcode.com