Skip to content

Commit 307097b

Browse files
committed
maximum-depth-of-binary-tree and find-minimum-in-rotated-sorted-array solutions
1 parent 904acd5 commit 307097b

File tree

2 files changed

+84
-0
lines changed

2 files changed

+84
-0
lines changed
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
/**
2+
* @param nums - 오름차순 정렬된 정수 배열
3+
* @returns - 최솟값
4+
* @description
5+
* - 이진 탐색으로 right와 비교하며 배열의 범위를 좁혀가며 탐색
6+
* - left와 right가 겹치는 포인트가 최솟값
7+
*/
8+
9+
function findMin(nums: number[]): number {
10+
let left = 0;
11+
let mid = Math.floor(nums.length / 2);
12+
let right = nums.length - 1;
13+
14+
if (nums.length < 2) {
15+
return nums[0];
16+
}
17+
18+
while (left < right) {
19+
if (nums[right] < nums[mid]) {
20+
left = mid + 1;
21+
} else {
22+
right = mid;
23+
}
24+
25+
mid = Math.floor((left + right) / 2);
26+
}
27+
return nums[left];
28+
}
29+
30+
const nums = [2, 1];
31+
console.log(findMin(nums));
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
class TreeNode {
2+
val: number;
3+
left: TreeNode | null;
4+
right: TreeNode | null;
5+
constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) {
6+
this.val = val === undefined ? 0 : val;
7+
this.left = left === undefined ? null : left;
8+
this.right = right === undefined ? null : right;
9+
}
10+
}
11+
12+
/**
13+
* @param root - 이진 트리
14+
* @returns - 루트 노드에서 가장 먼 리프노드 까지 가장 긴 경로를 따른 노드 수
15+
* @description
16+
* - root가 없는 경우를 제외 후 재귀 호출로 1씩 증가
17+
* - left, right 중 가장 큰 값을 return
18+
* - maxDepth 자체를 재귀로 사용하는 방식이 가장 효율적
19+
*/
20+
21+
// function maxDepth(root: TreeNode | null): number {
22+
// if (!root) {
23+
// return 0;
24+
// }
25+
26+
// function recursive(current: TreeNode | null): number {
27+
// if (!current) {
28+
// return 0;
29+
// }
30+
31+
// return 1 + Math.max(recursive(current.left), recursive(current.right));
32+
// }
33+
34+
// return recursive(root);
35+
// }
36+
37+
function maxDepth(root: TreeNode | null): number {
38+
if (root === null) {
39+
return 0;
40+
}
41+
42+
const left = 1 + maxDepth(root.left);
43+
const right = 1 + maxDepth(root.right);
44+
45+
return Math.max(left, right);
46+
}
47+
48+
const root = new TreeNode(
49+
3,
50+
new TreeNode(9),
51+
new TreeNode(20, new TreeNode(15), new TreeNode(7))
52+
);
53+

0 commit comments

Comments
 (0)