[c++] 가장 가까운 잎 노드까지의 거리(Distance to the Nearest Leaf Node)
이 문제는 이진 트리에서 주어진 노드에서 가장 가까운 잎 노드까지의 거리를 찾는 문제입니다.
문제 설명
주어진 이진 트리에서 노드의 값을 나타내는 정수가 주어집니다. 이때, 각 노드에서 가장 가까운 잎 노드까지의 거리를 찾아 반환해야 합니다.
알고리즘 설명
가장 가까운 잎 노드까지의 거리를 찾기 위해 우선적으로 최단 거리를 갱신할 변수를 초기화합니다. 그 후에 깊이 우선 탐색(DFS)을 통해 현재 노드에서 잎 노드까지의 거리를 찾습니다. 이 때, 왼쪽 서브트리와 오른쪽 서브트리에 대해서도 같은 과정을 반복하여 가장 가까운 잎 노드까지의 거리를 찾아냅니다.
아래는 C++로 작성된 가장 가까운 잎 노드까지의 거리를 구하는 예시 코드입니다.
#include <iostream>
#include <algorithm>
struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
int distanceToNearestLeaf(TreeNode* root) {
if (!root) return 0;
if (!root->left && !root->right) return 1;
int leftDistance = distanceToNearestLeaf(root->left);
int rightDistance = distanceToNearestLeaf(root->right);
return std::min(leftDistance, rightDistance) + 1;
}
마무리
이 문제를 해결하기 위해 기본적인 이진 트리 구조와 DFS 알고리즘을 활용해 가장 가까운 잎 노드까지의 거리를 구할 수 있었습니다. 위의 예시 코드를 활용하여 트리 구조에서 가장 가까운 잎 노드까지의 거리를 쉽게 구할 수 있습니다.