본문 바로가기

Leetcode

[Leetcode] 226. Invert Binary Tree - JS

https://leetcode.com/problems/invert-binary-tree/?envType=study-plan-v2&envId=top-interview-150

 

1. 문제 분석

문제분석
--------------------
- 이진트리 root가 주어질 때, left, right를 바꿔라.

제한조건
--------------------
- 이진트리 노드의 갯수는 0 ~ 100이다.
- -100 <= Node.val <= 100

 

2. 접근 방법

접근방법
--------------------
재귀적으로 left와 right를 바꿔준다.

 

 

3. 코드

/**
 * Definition for a binary tree node.
 * function TreeNode(val, left, right) {
 *     this.val = (val===undefined ? 0 : val)
 *     this.left = (left===undefined ? null : left)
 *     this.right = (right===undefined ? null : right)
 * }
 */
var invertTree = function(root) {
    if (!root) {
        return null;
    }

    let prevLeft = root.left;
    root.left = root.right;
    root.right = prevLeft;
    
    invertTree(root.left);
    invertTree(root.right);
    
    return root;
};

 

 

4. 복잡도 분석

- 시간복잡도: O(n) 

- 공간복잡도: O(log n ~ n) 좌우 균형을 이룰 경우: log n, 편향된 경우: n

 

Easy 난이도는 간단하게 재귀로 접근하는 쉬운 문제인 것 같다.