ALGORITHM/Java algorithm

[LeetCode][Java] 101. Symmetric Tree

호이호이호잇 2022. 9. 1. 23:06
728x90
반응형

약간 세개를 풀면서 이제 

재귀함수 에 대한 감을 잡아가고 있다.

 

간단한거에서 생각을 잘 못해서 

너무 많이 틀려버렸지 뭐얌?

 

담에 더 잘할거니까 !! 

화이팅..

 

문제
대칭인지 아닌지 찾아내는 문제.

위 사진 처럼 반을 나누었을 때 대칭이 되면 됨.

 

딱 보자마자 왼쪽 오른쪽 나눠서 재귀함수로 풀면 되겠다!

라고 생각은 들었다.!

 

하지만 이제 그 뒤에 푸는 방법이 따라줘야되는데,.. 큼..

 

데이터

데이터는 요러케! 

왼쪽 팔이랑 오른쪽 팔이 있음!

/**
 * 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;
 *     }
 * }
 */

 

나의 결과

너무 많이 틀려서 나의 결과가 살짝 창피하다..

그래서 자를까 했지만..

이것도 나의 성☆장☆스☆토☆리 의 일부분 이랄까 ?

내가 계속 left.val != right.val 이렇게 value 를 체크해야하는데, 그냥 left , right를 체크해서 계속 틀렸다..

그거 말고도 많이 틀렸지만..

 

정답
class Solution {
    public boolean isSymmetric(TreeNode root) {
        if(root == null) return true;
        else return isSymmetric(root.left, root.right);
    }
    
    public boolean isSymmetric(TreeNode left, TreeNode right) {
        if(left == null && right == null) return true;
        if(left == null || right == null) return false;
        if(left.val != right.val) return false;
        
        return (isSymmetric(left.left, right.right) 
                && isSymmetric(left.right, right.left));
    }
}

 

 

728x90
반응형