๋ฌธ์
ํ์ด ๊ณผ์
๋ ๊ฐ์ ์ด์ง ํธ๋ฆฌ๋ฅผ ํฉ์น๋ ์ฐ์ฐ์ ์ํํ๋ ๋ฌธ์ ์
๋๋ค.
์ง๊ด์ ์ผ๋ก ์๊ฐํ์๋๋ ์ฌ์ด๊ฑฐ ๊ฐ์๋๋ฐ ์๊ฐ๋ณด๋ค ์ด๋ค ๋ฐฉ์์ผ๋ก ๊ตฌํํด์ผ ๋ช
ํํ ์ง ๋ง์ ๊ณ ๋ฏผ์ ํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
์ ๋ merge
๋ผ๋ ํจ์๋ฅผ ์ฌ๊ท์ ์ผ๋ก ํธ์ถํ์ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ณ ์ ํ์ต๋๋ค.
์ฐ์ merge
์ ๊ธฐ์ค์ด ๋๋ ํธ๋ฆฌ๋ฅผ main
, ๋๋จธ์ง๋ฅผ sub
๋ก ๋๋
๋ค์ ๋ ํธ๋ฆฌ ๋ชจ๋ ํ์ฌ ๋ฃจํธ ๋
ธ๋๊ฐ ์กด์ฌํ ๊ฒฝ์ฐ main
์ ๊ฐ์ ๋ํ์ต๋๋ค.
๋ค์ ์ฌ๊ทํธ์ถ ์ ์ ๋จผ์ ์๋ธํธ๋ฆฌ๊ฐ ์กด์ฌํ๋์ง ํ์ธํ์๊ณ
๋ ํธ๋ฆฌ ๋ชจ๋ ๊ฐ๊ฐ ์ผ์ชฝ ํน์ ์ค๋ฅธ์ชฝ ์๋ธํธ๋ฆฌ๊ฐ ์กด์ฌํ ๋๋ง DFS
๋ฅผ ์ํํ๊ณ
๊ทธ ์ธ์ ๊ฒฝ์ฐ์๋ ๋ณ๋์ ์ฒ๋ฆฌ๋ฅผ ํด์คฌ์ต๋๋ค.
์ฌ๊ธฐ์ ๋ณ๋์ ์ฒ๋ฆฌ๋ main
์ ์ผ์ชฝ(์ค๋ฅธ์ชฝ) ์๋ธํธ๋ฆฌ๊ฐ ์กด์ฌํ์ง ์๋๋ฐ sub
์ ์กด์ฌํ ๊ฒฝ์ฐ๋ฅผ ์๋ฏธํฉ๋๋ค.
๋ง์ง๋ง์ผ๋ก merge
๋ฅผ ํธ์ถํ๋ ์ฒซ ์์ ์์๋ t1 ๊ณผ t2
์ค์์null
์ด ์๋ ํธ๋ฆฌ๋ฅผ main
์ผ๋ก ์ค์ ํด์ ํ์์ ์ํํ๋๋ก ํ์ต๋๋ค.
์ฝ๋
/**
* Definition for a binary tree node.
* function TreeNode(val, left, right) {
* this.val = (val===undefined ? 0 : val)
* this.left = (left===undefined ? null : left)
* this.right = (right===undefined ? null : right)
* }
*/
/**
* @param {TreeNode} t1
* @param {TreeNode} t2
* @return {TreeNode}
*/
var mergeTrees = function (t1, t2) {
function merge(main, sub) {
if (main && sub) main.val += sub.val;
if (main && main.left && sub && sub.left) {
merge(main.left, sub.left);
} else if (sub && sub.left) {
main.left = sub.left;
}
if (main && main.right && sub && sub.right) {
merge(main.right, sub.right);
} else if (sub && sub.right) {
main.right = sub.right;
}
}
if (t1) merge(t1, t2);
else merge(t2, t1);
const ans = t1 ? t1 : t2;
return ans;
};
'๐ algorithm > leetcode' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
LeetCode 104 - Maximum Depth of Binary Tree (Easy) (0) | 2021.03.03 |
---|---|
LeetCode 102 - Binary Tree Level Order Traversal (Medium) (0) | 2021.03.03 |
LeetCode 98 - Validate Binary Search Tree (Medium) (0) | 2021.03.03 |
LeetCode 130 - Surrounded Regions (Medium) (0) | 2021.03.03 |
LeetCode 226 - Invert Binary Tree (Easy) (0) | 2021.03.03 |
๐ฌ ๋๊ธ