Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- K8S
- event loop
- leetcode
- Deployment
- elasticsearch
- POD
- ansible
- asgi
- Django
- asyncio
- YAML
- 자바스크립트
- intervals
- IAC
- docker
- 쿠버네티스
- EKS
- ebs
- FastAPI
- WSGI
- Python
- dockerfile
- kernel
- AWS
- terraform
- Service
- Kubernetes
- github
- IAM
- EC2
Archives
- Today
- Total
궁금한게 많은 개발자 노트
[ leetcode ] 111. Minimum Depth of Binary Tree 본문
Binary Tree가 주어졌을 때, root에서 leaf node까지 가장 짧은 경로의 길이를 구하는 문제입니다.
재귀를 이용하여 해당 노드가 NULL이면 0을 반환하고 left, child중 짧은 길이를 반복적으로 반환하면서 해를 구합니다.
이 때 left나 right child중 하나 이상 NULL이면 최소값이 0으로 되므로 조건문으로 큰 값이 포함되도록 해줍니다.
둘 다 NULL이 아닐 때는 둘 중 작은 값, 하나 이상 NULL 이면 1 이거나 값이 있는 것을 반환 하도록 합니다.
(자식 한쪽만 값이 있는 경우 해당 노드는 leaf가 아니므로 leaf의 값을 가져가야 함)
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode() : val(0), left(nullptr), right(nullptr) {}
* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
* };
*/
#define min(a, b)(a > b ? b : a)
class Solution {
public:
int minDepth(TreeNode* root) {
if (!root) return 0;
int left = minDepth(root->left);
int right = minDepth(root->right);
if (!left || !right) return 1 + left + right;
return 1 + min(left, right);
}
};
'Algorithm' 카테고리의 다른 글
[ leetcode ] 102. Binary Tree Level Order Traversal (0) | 2023.05.02 |
---|---|
[ leetcode ] 110. Balanced Binary Tree (0) | 2023.05.02 |
[ leetcode ] 258. Add Digits (0) | 2023.05.02 |
[ leetcode ] 1288. Remove Covered Intervals (0) | 2023.05.02 |
[ leetcode ] 56. Merge Intervals (0) | 2023.05.02 |
Comments