[알고리즘] Leetcode_226_Invert_Binary_Tree

jeongjwon·2023년 4월 25일
0

알고리즘

목록 보기
40/48

Problem



Solve

  • 계속 해왔던 dfs 재귀를 이용해 left 와 right 를 root 에서 바꾸어주는 기능만 추가했다.
  • 다만 재귀에서 base 인 경우에는 root가 null일 때 null 을 반환한다.

class Solution {
   public static TreeNode dfs(TreeNode root){
        if(root == null) return null;

        TreeNode left = dfs(root.left);
        TreeNode right = dfs(root.right);

        root.left = right;
        root.right = left;
        
        return root;

    }
    public static TreeNode invertTree(TreeNode root) {
        TreeNode answer = dfs(root);
        return answer;
    }
}

이를 refactoring 한 코드는

class Solution {
    public TreeNode invertTree(TreeNode root) {
        if(root == null) return null;
		
		TreeNode temp = invertTree(root.left);
		root.left = invertTree(root.right);
		root.right = temp;
		
		
		return root;
    }
}

invertTree 함수 자체가 dfs 로써 임시적인 저장소인 temp를 이용하여 세 줄로 간략화할 수 있다.

0개의 댓글