티스토리 뷰
반응형
문제
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 |
반응형