[LeetCode] 101. Symmetric Tree
https://leetcode.com/problems/symmetric-tree
๋ฌธ์ ์ ๊ทผ
๋ฃจํธ ๋
ธ๋๋ฅผ ๊ธฐ์ค์ผ๋ก ์ผ์ชฝ ์๋ธํธ๋ฆฌ์ ์ค๋ฅธ์ชฝ ์๋ธํธ๋ฆฌ๊ฐ ๋์นญ์ธ์ง๋ฅผ ํ์
ํ๋ ๋ฌธ์ ์ด๋ค.
BFS์ฒ๋ผ ํ๋ฅผ ์ด์ฉํด์ ๋ฐ๋ณต๋ฌธ์ผ๋ก ํ๋ ค๊ณ ํ์ผ๋, ๋ญ๊ฐ ์ ์๋์ ์ฌ๊ทํจ์๋ฅผ ์ด์ฉํ๋ค.
์ผ์ชฝ๊ณผ ์ค๋ฅธ์ชฝ ์๋ธํธ๋ฆฌ์ ๋
ธ๋๋ฅผ ์ฌ๊ท ํจ์๋ฅผ ์ด์ฉํด ๋น๊ต
๋์ฌ ์ ์๋ ๊ฒฝ์ฐ์ ์ 4๊ฐ์ง
1. ์์ชฝ ๋
ธ๋๊ฐ ๋ชจ๋ null์ธ ๊ฒฝ์ฐ(์๋ฌด ๋ฌธ์ ์์ด ๋๊น์ง ํธ๋ฆฌ๋ฅผ ์ํ ํ์ผ๋ฏ๋ก true)
2. ํ์ชฝ ๋
ธ๋๋ง null์ธ ๊ฒฝ์ฐ(๋น๋์นญ์ด๋ฏ๋ก false)
3. ์์ชฝ ๋
ธ๋์ ๊ฐ์ด ๋ค๋ฅธ ๊ฒฝ์ฐ(๋น๋์นญ์ด๋ฏ๋ก false)
4. ์์ชฝ ๋
ธ๋์ ๊ฐ์ด ๊ฐ์ ๊ฒฝ์ฐ(์ง๊ธ๊น์ง๋ ๋์นญ์ด๋ฏ๋ก ์ถ๊ฐ์ ์ธ ํธ๋ฆฌ ์ํ - ์ฌ๊ท ํจ์๋ฅผ ์ด์ฉํด ์ผ์ชฝ,์ค๋ฅธ์ชฝ ์์๋ค์ ์ํ)
-> ์ผ์ชฝ๊ณผ ์ค๋ฅธ์ชฝ ๋ชจ๋ true์ผ ๊ฒฝ์ฐ๋ง ๋์นญ์ด๋ฏ๋ก ๋ง์ง๋ง์ return left&&right ์ถ๊ฐ
Code
class Solution {
public boolean isSymmetric(TreeNode root) {
return checkSymmetric(root,root);
}
boolean checkSymmetric(TreeNode leftSide,TreeNode rightSide){
if(leftSide == null && rightSide == null){
return true;
}
if(leftSide == null || rightSide == null){
return false;
}
if(leftSide.val != rightSide.val) {
return false;
}
boolean left = checkSymmetric(leftSide.left, rightSide.right);
boolean right = checkSymmetric(leftSide.right, rightSide.left);
return left && right;
}
}
์ด๋ ค์ ๋ ์ / ๋ฐฐ์ด ์ / ๋๋ ์
์ฒ์์ ์ผ์ชฝ๊ณผ ์ค๋ฅธ์ชฝ ์๋ธํธ๋ฆฌ๋ฅผ queue๋ฅผ ์ด์ฉํด ํ๋ ค๊ณ ํ๋๋ฐ ์ ์๋์ ์คํจํ๋ค.
๊ทธ๋ฆฌ๊ณ ์ฌ๊ทํจ์๋ฅผ ์ด์ฉํด์ ํ์๋๋ฐ ์ฒ์์๋ return left && right๊ฐ ์์ด์ ๊ณ์ ์คํจํ๊ณ
๊ณ์ println์ ์ด์ฉํด์ ์ฐ์ด์ ๊ฑฐ์ ์ฐ์ด์ ๋ง์ถ ๊ธ์ผ๋ก ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๋ค ํด๋ณธ ๊ฒ ๊ฐ๋ค.
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Algorithm/Java][ํ๋ก๊ทธ๋๋จธ์ค] ์ ๊ณ ๊ฒฐ๊ณผ ๋ฐ๊ธฐ (0) | 2022.02.14 |
---|---|
[Algorithm/Java][LeetCode] 121. Best Time to Buy and Sell Stock (0) | 2022.02.05 |
[Algorithm/Java][๋ฐฑ์ค] 2805๋ฒ ๋๋ฌด ์๋ฅด๊ธฐ (0) | 2022.01.28 |
[Algorithm/Java][LeetCode] 70. Climbing Stairs (0) | 2022.01.25 |
[Algorithm/Java][LeetCode] 53. Maximum subarray (0) | 2022.01.23 |