문제 설명 :
TreeNode가 주어지고, 해당 Tree가 좌우 대칭인지 확인하는 문제이다.
/**
* 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 {
public boolean isSymmetric(TreeNode root) {
//inorder traversal을 통해 Symmetric을 확인할 수 있다.
return isSymentricCheck(root.left, root.right);
}
private boolean isSymentricCheck(TreeNode left, TreeNode right){
if(left == null && right == null){
return true;
}
if(left == null || right == null){
return false;
}
if(left.val == right.val){
return isSymentricCheck(left.left, right.right) && isSymentricCheck(left.right, right.left);
}
return false;
}
}
해설 :
inorder에 꽂혔는지 inorder 순회를 통해 list를 만들면, 좌우 대칭인 경우 list도 좌우 대칭이 되기에 이 방식으로 처리를 시도했다.
그러나 null이 중간에 포함되는 경우 이를 처리하기가 복잡하여, 이전 문제처럼 다시 하나하나 확인하는 방식 + recursive를 활용했다.
'Algorithm > LeetCode' 카테고리의 다른 글
[Java] 108. Convert Sorted Array to Binary Search Tree (2) | 2023.06.13 |
---|---|
[Java] 104. Maximum Depth of Binary Tree (0) | 2023.06.13 |
[Java] 100. Same Tree (0) | 2023.06.12 |
[Java] 94. Binary Tree Inorder Traversal (0) | 2023.06.12 |
[Java] 88. Merge Sorted Array (0) | 2023.06.12 |