Skip to content

Commit eb4df84

Browse files
authored
[oh-chaeyeon] 25.02.06 (#40)
* 배열 자르기 / 기초 * 배열 원소의 길이 / 기초 * 배열 회전시키기 / 기초 * 중복된 숫자 개수 / 기초 * 제일 작은 수 제거하기 / 중급 * 행렬의 덧셈 / 중급 * 나누어 떨어지는 숫자 배열 / 중급 * 행렬의 곱셈 / 심화 * 교점에 별 만들기 / 심화 * n^2 배열 자르기 / 심화 * String Reversal / 기초 * Control Z / 기초 * Hate English / 기초 * String Calculation / 기초 * Crane Game / 중급 * Valid Parentheses / 중급 * Dart Game / 중급 * Rotate Parentheses / 심화 * Stock Price / 심화 * Delivery Box / 심화 * 순서쌍의 개수 / 기초 * 점의 위치 구하기 / 기초 * 로그인 성공? / 기초 * 특이한 정렬 / 기초 * 카드 뭉치 / 중급 * 공원 산책 / 중급 * 햄버거 만들기 / 중급 * 모스부호1 / 기초 * A로 B만들기 / 기초 * 진로 순서 정하기 / 기초 * 등수 매기기 / 기초 * 완주하지 못한 선수 / 중급 * 포켓몬 / 중급 * 추억 점수 / 중급 * 할인 행사 / 심화 * 오픈채팅방 / 심화 * Maximum Depth of Binary Tree / 초급 * Binary Tree Inorder Traversal / 초급 * Same Tree / 초급 * Invert Binary Tree / 초급 * Binary Tree Level Order Traversal / 중급 * Validate Binary Search Tree / 중급 * Construct Binary Tree from Preorder and Inorder Traversal / 중급 * 이진 변환 반복하기 / 심화 * Binary Tree Maximum Path Sum / 심화
1 parent 11e5265 commit eb4df84

9 files changed

+235
-0
lines changed
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
/**
2+
* Definition for a binary tree node.
3+
* function TreeNode(val, left, right) {
4+
* this.val = (val===undefined ? 0 : val)
5+
* this.left = (left===undefined ? null : left)
6+
* this.right = (right===undefined ? null : right)
7+
* }
8+
*/
9+
/**
10+
* @param {TreeNode} root
11+
* @return {number[]}
12+
*/
13+
var inorderTraversal = function (root) {
14+
const result = [];
15+
function traverse(node) {
16+
if (!node) return;
17+
traverse(node.left);
18+
result.push(node.val);
19+
traverse(node.right);
20+
}
21+
traverse(root);
22+
return result;
23+
};
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
/**
2+
* Definition for a binary tree node.
3+
* function TreeNode(val, left, right) {
4+
* this.val = (val===undefined ? 0 : val)
5+
* this.left = (left===undefined ? null : left)
6+
* this.right = (right===undefined ? null : right)
7+
* }
8+
*/
9+
/**
10+
* @param {TreeNode} root
11+
* @return {number[][]}
12+
*/
13+
var levelOrder = function (root) {
14+
const result = [];
15+
16+
function traverse(node, level) {
17+
if (!node) return;
18+
if (!result[level]) result[level] = [];
19+
result[level].push(node.val);
20+
traverse(node.left, level + 1);
21+
traverse(node.right, level + 1);
22+
}
23+
24+
traverse(root, 0);
25+
return result;
26+
};
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
/**
2+
* Definition for a binary tree node.
3+
* function TreeNode(val, left, right) {
4+
* this.val = (val===undefined ? 0 : val)
5+
* this.left = (left===undefined ? null : left)
6+
* this.right = (right===undefined ? null : right)
7+
* }
8+
*/
9+
/**
10+
* @param {TreeNode} root
11+
* @return {number}
12+
*/
13+
var maxPathSum = function (root) {
14+
let maxSum = -Infinity;
15+
16+
function dfs(node) {
17+
if (!node) return 0;
18+
19+
const left = Math.max(dfs(node.left), 0);
20+
const right = Math.max(dfs(node.right), 0);
21+
22+
const currentSum = node.val + left + right;
23+
24+
maxSum = Math.max(maxSum, currentSum);
25+
26+
return node.val + Math.max(left, right);
27+
}
28+
29+
dfs(root);
30+
return maxSum;
31+
};
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
/**
2+
* Definition for a binary tree node.
3+
* function TreeNode(val, left, right) {
4+
* this.val = (val===undefined ? 0 : val)
5+
* this.left = (left===undefined ? null : left)
6+
* this.right = (right===undefined ? null : right)
7+
* }
8+
*/
9+
/**
10+
* @param {number[]} preorder
11+
* @param {number[]} inorder
12+
* @return {TreeNode}
13+
*/
14+
var buildTree = function (preorder, inorder) {
15+
const inorderMap = new Map();
16+
inorder.forEach((val, idx) => inorderMap.set(val, idx));
17+
18+
function build(preStart, preEnd, inStart, inEnd) {
19+
if (preStart > preEnd || inStart > inEnd) return null;
20+
21+
const rootVal = preorder[preStart];
22+
const root = new TreeNode(rootVal);
23+
const inRootIndex = inorderMap.get(rootVal);
24+
const leftSize = inRootIndex - inStart;
25+
26+
root.left = build(
27+
preStart + 1,
28+
preStart + leftSize,
29+
inStart,
30+
inRootIndex - 1
31+
);
32+
root.right = build(preStart + leftSize + 1, preEnd, inRootIndex + 1, inEnd);
33+
34+
return root;
35+
}
36+
37+
return build(0, preorder.length - 1, 0, inorder.length - 1);
38+
};
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
/**
2+
* Definition for a binary tree node.
3+
* function TreeNode(val, left, right) {
4+
* this.val = (val===undefined ? 0 : val)
5+
* this.left = (left===undefined ? null : left)
6+
* this.right = (right===undefined ? null : right)
7+
* }
8+
*/
9+
/**
10+
* @param {TreeNode} root
11+
* @return {TreeNode}
12+
*/
13+
var invertTree = function (root) {
14+
if (root === null) {
15+
return null;
16+
}
17+
18+
let temp = root.left;
19+
root.left = root.right;
20+
root.right = temp;
21+
22+
invertTree(root.left);
23+
invertTree(root.right);
24+
25+
return root;
26+
};
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
/**
2+
* Definition for a binary tree node.
3+
* function TreeNode(val, left, right) {
4+
* this.val = (val===undefined ? 0 : val)
5+
* this.left = (left===undefined ? null : left)
6+
* this.right = (right===undefined ? null : right)
7+
* }
8+
*/
9+
/**
10+
* @param {TreeNode} root
11+
* @return {number}
12+
*/
13+
var maxDepth = function (root) {
14+
if (root === null) {
15+
return 0;
16+
}
17+
18+
let leftDepth = maxDepth(root.left);
19+
let rightDepth = maxDepth(root.right);
20+
21+
return Math.max(leftDepth, rightDepth) + 1;
22+
};
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
/**
2+
* Definition for a binary tree node.
3+
* function TreeNode(val, left, right) {
4+
* this.val = (val===undefined ? 0 : val)
5+
* this.left = (left===undefined ? null : left)
6+
* this.right = (right===undefined ? null : right)
7+
* }
8+
*/
9+
/**
10+
* @param {TreeNode} p
11+
* @param {TreeNode} q
12+
* @return {boolean}
13+
*/
14+
var isSameTree = function (p, q) {
15+
if (p === null && q === null) {
16+
return true;
17+
}
18+
19+
if (p === null || q === null) {
20+
return false;
21+
}
22+
23+
if (p.val !== q.val) {
24+
return false;
25+
}
26+
27+
return isSameTree(p.left, q.left) && isSameTree(p.right, q.right);
28+
};
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
/**
2+
* Definition for a binary tree node.
3+
* function TreeNode(val, left, right) {
4+
* this.val = (val===undefined ? 0 : val)
5+
* this.left = (left===undefined ? null : left)
6+
* this.right = (right===undefined ? null : right)
7+
* }
8+
*/
9+
/**
10+
* @param {TreeNode} root
11+
* @return {boolean}
12+
*/
13+
var isValidBST = function (root) {
14+
function validate(node, lower, upper) {
15+
if (!node) return true;
16+
17+
const val = node.val;
18+
if (val <= lower || val >= upper) return false;
19+
20+
return validate(node.left, lower, val) && validate(node.right, val, upper);
21+
}
22+
23+
return validate(root, -Infinity, Infinity);
24+
};
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
function solution(s) {
2+
let count = 0;
3+
let removed = 0;
4+
5+
while (s !== "1") {
6+
const originalLength = s.length;
7+
const newStr = s
8+
.split("")
9+
.filter((char) => char === "1")
10+
.join("");
11+
removed += originalLength - newStr.length;
12+
s = newStr.length.toString(2);
13+
count++;
14+
}
15+
16+
return [count, removed];
17+
}

0 commit comments

Comments
 (0)