티스토리 뷰

코딩테스트/LeetCode

Symmetric Tree

즐망 2023. 10. 10. 21:29
반응형

문제

https://leetcode.com/problems/symmetric-tree/description/

 

LeetCode - The World's Leading Online Programming Learning Platform

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

풀이 코드

/**
 * 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 {

    /**
     * Tree를 왼쪽, 오른쪽으로 나눕니다.
     * 왼쪽 Tree는 전위 순회로, 오른쪽 Tree는 후위 순회로 탐색합니다.
     * 왼쪽 Tree의 node.val과 오른쪽 Tree의 node.val이 모두 동일하면 
     * symmetric Tree이므로 true를 return.
     */
    public boolean isSymmetric(TreeNode root) {
        return DFS(root.left, root.right);
    }

    private static boolean DFS(TreeNode node1, TreeNode node2) {
        if (node1 == null && node2 == null) {
            //왼쪽 node와 오른쪽 node의 끝이 동일하면, true를 return.
            return true;
        } else if (node1 == null || node2 == null) {
            //왼쪽 node와 오른쪽 node가 한쪽만 끝났다면, false를 return.
            return false;
        } else { //왼쪽 node와 오른쪽 node가 모두 null이 아닌 경우.
            if (node1.val == node2.val) { //왼쪽 node.val과 오른쪽 node.val이 같은 경우.
            	//왼쪽 Tree는 전위 순회로, 오른쪽 Tree는 후위 순회로 탐색한다.
                //두 node.val이 한번이라도 다르다면, false를 return 받고, 다음행이 실행된다.
                boolean left = DFS(node1.left, node2.right);
                boolean right = DFS(node1.right, node2.left);
                //한번이라도 false였다면 false를 return.
                return left && right;
            } else {
                return false;
            }
        }
    }
}
반응형

'코딩테스트 > LeetCode' 카테고리의 다른 글

Keys and Rooms  (0) 2023.10.12
Create Binary Tree From Descriptions  (0) 2023.10.11
Two Sum IV - Input is a BST  (0) 2023.10.10
Count Good Nodes in Binary Tree  (0) 2023.10.06
Find Elements in a Contaminated Binary Tree  (0) 2023.10.05
반응형