101. ๋์นญ ํธ๋ฆฌ ๐
5044 ๋จ์ด leetcodeprogrammingjavascripttutorial
์๋ฃจ์ ๊ฐ๋ฐ:
์ง๋ฌธ ์ค๋ช
๋ฐ๋ผ์ ์ด์ง ํธ๋ฆฌ๊ฐ ์ฃผ์ด์ง๊ณ ๋์นญ ํธ๋ฆฌ์ธ์ง ํ์ธํด์ผ ํฉ๋๋ค. ๋๋ฌด์์ ๋ณด๋ฉด ๊ฑฐ์ธ์ด์ด์ผ ํ๋ค๋ ๋ป์ด๋ค. ๋ฏธ๋ฌ๊ฐ ์๊ธฐ ๋๋ฌธ์ ์ฃผ์ด์ง ๋ฃจํธ ๋ ธ๋๋ฅผ ํ์ธํ ํ์๊ฐ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ผ์ชฝ๊ณผ ์ค๋ฅธ์ชฝ ์์์ ๋ฏธ๋ฌ๋งํด์ผ ํฉ๋๋ค.
๋ฏธ๋ฌ๋ง๋ ์๋ฏธ๋ ํธ๋ฆฌ์
left
์ชฝ์์ ํธ๋ฆฌ์ right
์ชฝ์ด ๋์ผํ ๊ฐ์ ๊ฐ์ง๋ง ์์์ด ์๋ก ๋ฐ๋์ด์ผ ํ๋ค๋ ๊ฒ์
๋๋ค. ๊ทธ๊ฒ์ ํผ๋์ค๋ฝ๊ฒ ๋ค๋ฆฌ๊ณ ์กฐ๊ธ ์์ต๋๋ค. ์๊ฐ์ ์ผ๋ก ๋งํ๋ฉด ์์ํ๊ธฐ ์ฝ์ง๋ง ์ด๊ฒ์ ์ฝ๋๋ก ๋ํ๋ด๋ ค๋ฉด ์กฐ๊ธ ๋ ๋ณต์กํฉ๋๋ค.๊ถ์ฅ ์ง์
์ฐ๋ฆฌ๋ ๋ฌด์์ ์๊ณ ์์ต๋๊น?
์ด๋ป๊ฒ ํ ๊ฒ์ธ๊ฐ:
ํธ๋ฆฌ์ ์์ชฝ์์ ๋์์ ์ฌํ ์ํ๋ฅผ ์ํํ ๊ฒ์ ๋๋ค. ์ฆ, ์ผ์ชฝ์์๋ ์ต๋ํ ์ผ์ชฝ์ผ๋ก ๊ฐ๊ณ ์ค๋ฅธ์ชฝ์์๋ ์ต๋ํ ์ค๋ฅธ์ชฝ์ผ๋ก ๊ฐ๋๋ค. ์์ชฝ ๋ ธ๋์ ๊ฐ์ ๋น๊ตํ์ญ์์ค. ๊ทธ๋ค์ด ๊ฐ๋ค๋ฉด ์ฐ๋ฆฌ๋ ๊ด์ฐฎ์ต๋๋ค. ๊ทธ๋ ์ง ์๋ค๋ฉด ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ด ๋์ ๋๋ฌด๋ผ๋ ๊ฒ์ ์๋๋ค.
์ฐ๋ฆฌ๋ ์ด๊ฒ์ ์ฌ๊ท์ ์ผ๋ก ํ ๊ฒ์ ๋๋ค.
false
false
.nodes
๋ฅผ ๋ฐฉ๋ฌธํ๋ฉด ๋๋ฌด๊ฐ ๋์นญ์ธ์ง ๋ฌป์ต๋๋ค. ๋ชจ๋ ๋
ธ๋๋ฅผ ๋ฐฉ๋ฌธํ๊ณ ๋์นญ์ธ์ง ํ์ธํ์์ ์๋ฏธํฉ๋๋ค. ๊ทธ๋ ๋ค๋ฉด true
๋ฅผ ๋ฐํํฉ๋๋ค. ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ false
๋ฅผ ๋ฐํํฉ๋๋ค. ์ด๋์์๋ false๊ฐ ๋ฐ์ํ๋ฉด ์คํ์ ํตํด ๋ฒ๋ธ๋ง๋์ด ์๋ชป๋ ๋
ธ๋๊ฐ ์์ผ๋ฏ๋ก ์ด๊ฒ์ ์๋ชป๋ ํธ๋ฆฌ์์ ์๋ ค์ค๋๋ค. ๋ชจ๋ ์ฐธ์ด๋ฉด true
๋ฅผ ๋ฐํํฉ๋๋ค. ๋น ์ค ํ๊ธฐ๋ฒ:
n
๊ฐ ํฌํจ๋ฉ๋๋ค. ' ๊ฐ์ ๋ ์ ์์๊น? ' ์! Morris Traversal์ O(1) ๊ณต๊ฐ ๋ณต์ก์ฑ์์ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ Morris Traversal์ ์ฝ๊ธฐ ๊น๋ค๋กญ๊ณ ์ด๋ ต์ต๋๋ค. ๋จ์ํ๋ฅผ ์ํด ์ฌ๊ธฐ์๋ ์ฌ์ฉํ์ง ์์ต๋๋ค.
๋ฆฌํธ์ฝ๋ ๊ฒฐ๊ณผ:
์ ์ถ ๋งํฌ ์ฐธ์กฐ:
ํด๊ฒฐ์ฑ
var isSymmetric = function (left_tree, right_tree = left_tree) {
/* -------------------------------------------------------------------------- */
/* 101. Symmetric Tree */
/* -------------------------------------------------------------------------- */
/**
* @author Samuel Hinchliffe
* @see {@link linkedin.com/in/samuel-hinchliffe-๐-2bb5801a5/ | Author's Linkedin }
* @see {@link github.com/Samuel-Hinchliffe}
*/
// https://leetcode.com/submissions/detail/684314946/
// Both are trees are the same
if (!left_tree && !right_tree) {
return true;
}
// One exists without another?
if (!left_tree || !right_tree) {
return false;
}
// Are left and right of same value?
// If not return false
if (left_tree.val != right_tree.val) {
return false;
}
// Do all the left trees and right trees
let outer_tree = isSymmetric(left_tree.left, right_tree.right);
let inner_tree = isSymmetric(left_tree.right, right_tree.left);
// Are both trees the same?
return outer_tree && inner_tree;
};
Reference
์ด ๋ฌธ์ ์ ๊ดํ์ฌ(101. ๋์นญ ํธ๋ฆฌ ๐), ์ฐ๋ฆฌ๋ ์ด๊ณณ์์ ๋ ๋ง์ ์๋ฃ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๋ณด์๋ค
https://dev.to/samuelhinchliffe/101-symmetric-tree-582e
ํ
์คํธ๋ฅผ ์์ ๋กญ๊ฒ ๊ณต์ ํ๊ฑฐ๋ ๋ณต์ฌํ ์ ์์ต๋๋ค.ํ์ง๋ง ์ด ๋ฌธ์์ URL์ ์ฐธ์กฐ URL๋ก ๋จ๊ฒจ ๋์ญ์์ค.
์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ
์ธ ๋ฐ๊ฒฌ์ ์ ๋
(Collection and Share based on the CC Protocol.)
var isSymmetric = function (left_tree, right_tree = left_tree) {
/* -------------------------------------------------------------------------- */
/* 101. Symmetric Tree */
/* -------------------------------------------------------------------------- */
/**
* @author Samuel Hinchliffe
* @see {@link linkedin.com/in/samuel-hinchliffe-๐-2bb5801a5/ | Author's Linkedin }
* @see {@link github.com/Samuel-Hinchliffe}
*/
// https://leetcode.com/submissions/detail/684314946/
// Both are trees are the same
if (!left_tree && !right_tree) {
return true;
}
// One exists without another?
if (!left_tree || !right_tree) {
return false;
}
// Are left and right of same value?
// If not return false
if (left_tree.val != right_tree.val) {
return false;
}
// Do all the left trees and right trees
let outer_tree = isSymmetric(left_tree.left, right_tree.right);
let inner_tree = isSymmetric(left_tree.right, right_tree.left);
// Are both trees the same?
return outer_tree && inner_tree;
};
Reference
์ด ๋ฌธ์ ์ ๊ดํ์ฌ(101. ๋์นญ ํธ๋ฆฌ ๐), ์ฐ๋ฆฌ๋ ์ด๊ณณ์์ ๋ ๋ง์ ์๋ฃ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๋ณด์๋ค https://dev.to/samuelhinchliffe/101-symmetric-tree-582eํ ์คํธ๋ฅผ ์์ ๋กญ๊ฒ ๊ณต์ ํ๊ฑฐ๋ ๋ณต์ฌํ ์ ์์ต๋๋ค.ํ์ง๋ง ์ด ๋ฌธ์์ URL์ ์ฐธ์กฐ URL๋ก ๋จ๊ฒจ ๋์ญ์์ค.
์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ ์ธ ๋ฐ๊ฒฌ์ ์ ๋ (Collection and Share based on the CC Protocol.)
์ข์ ์นํ์ด์ง ์ฆ๊ฒจ์ฐพ๊ธฐ
๊ฐ๋ฐ์ ์ฐ์ ์ฌ์ดํธ ์์ง
๊ฐ๋ฐ์๊ฐ ์์์ผ ํ ํ์ ์ฌ์ดํธ 100์ ์ถ์ฒ ์ฐ๋ฆฌ๋ ๋น์ ์ ์ํด 100๊ฐ์ ์์ฃผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์ ํ์ต ์ฌ์ดํธ๋ฅผ ์ ๋ฆฌํ์ต๋๋ค