ALGORITHM/Java algorithm

[LeetCode][Java] 100. Same Tree

호이호이호잇 2022. 9. 1. 20:50
728x90
반응형

다시 DFS 부터 차근차근..하려고 했는데

이런 자바로 데이터구조가 처음이잖아?

 

Single linked list 이런것부터 다시해야될듯..

문제보고 너무 당황했음

 

https://leetcode.com/problems/same-tree/

 

Same Tree - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

 

몸풀기 너낌으로 하려고 일부러 EASY 를 선택했는데, 왜 EASY 하지 않은건가요 선생님..

전교수님 보고싶다..

 

문제 
주어진 node tree 두 개를 비교하고 다르면 false, 같으면 true를 반환하는 것

그런데 데이터가..

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

요로케 선언 되어 있음!

 

너무 오랜만에 오른손 왼손 만난다.........

낯설어 낯설어

 

나는 DFS여서 Stack 을 이용해야하나 엄청 고민했는데, 엄청 간단한 문제였다.

재귀함수 방법을 쓰면 된다!

 

내가 푼 정답 :
사실 서칭해서 힌트를 좀 받았다.. 휴 몸풀기니까 괜찮겠쥐?
class Solution {
    public boolean isSameTree(TreeNode p, TreeNode q) {
        if(p == null && q == null) {
            return true;
        }
        
        if(p == null || q == null) {
            return false;
        }
        
        if(p.val != q.val) {
            return false;
        }
        
        if(p.val == q.val) {
            return isSameTree(p.right, q.right) && isSameTree(p.left, q.left);
        }
        
        return false;
    }
}

 

간단한 문제였는데 두 번이나 틀림!

 

한 번은 괄호가 이상해서 틀렸고

한 번은 전체 return false를 안해줘서 틀렸음!

 

바보 멍충이 

다음엔 더 잘 보자구~

728x90
반응형