[c++] 트리의 잎 노드 수 세기(Count the Number of Leaf Nodes in a Tree)
이번에는 C++로 작성된 이진 트리(Binary Tree)에서 잎 노드(Leaf Node)의 수를 세는 방법에 대해 알아보겠습니다.
#include <iostream>
using namespace std;
// 이진 트리 노드를 나타내는 구조체
struct Node {
int data;
Node* left;
Node* right;
Node(int val) : data(val), left(nullptr), right(nullptr) {}
};
// 이진 트리의 잎 노드 수를 세는 재귀 함수
int countLeafNodes(Node* root) {
if (root == nullptr) {
return 0;
} else if (root->left == nullptr && root->right == nullptr) {
return 1;
} else {
return countLeafNodes(root->left) + countLeafNodes(root->right);
}
}
int main() {
// 이진 트리 생성
Node* root = new Node(1);
root->left = new Node(2);
root->right = new Node(3);
root->left->left = new Node(4);
root->left->right = new Node(5);
// 잎 노드 수 출력
cout << "잎 노드 수: " << countLeafNodes(root) << endl;
return 0;
}
위 코드는 이진 트리를 구현하고, 재귀 함수를 사용하여 잎 노드의 수를 계산하는 예제입니다. 재귀 함수 countLeafNodes
는 트리의 각 노드를 순회하면서 잎 노드인지 확인하고, 잎 노드일 경우에만 카운트를 증가시킵니다.
이 코드를 실행하면 잎 노드의 수가 출력됩니다.
이러한 방식으로 C++에서 이진 트리의 잎 노드 수를 세는 기본적인 방법을 구현할 수 있습니다.