[c++] 서브트리에 속하는 트리 모든 노드의 합(Sum of All Nodes in a Subtree)

우리는 각 노드의 값과 해당 노드의 자식 노드들을 저장하는 이진 트리 자료구조를 가정합니다. 다음은 C++로 작성된 트리의 각 노드에 대한 클래스 정의입니다.

class TreeNode {
public:
    int val;
    vector<TreeNode*> children;
};

이제 각 노드를 루트로 하는 서브트리의 합을 계산하기 위한 재귀 함수를 작성할 수 있습니다. 다음은 C++로 작성된 예시 코드입니다.

int sumSubtree(TreeNode* root) {
    if (root == nullptr) {
        return 0;
    }

    int sum = root->val;
    for (auto child : root->children) {
        sum += sumSubtree(child);
    }

    return sum;
}

위의 코드는 각 노드를 루트로 하는 서브트리의 합을 재귀적으로 계산합니다. 빈 서브트리는 0을 반환하고, 그렇지 않은 경우 해당 노드의 값과 모든 자식 노드들을 루트로 하는 서브트리의 합을 더하여 반환합니다.

우리는 이제 이 코드를 사용하여 주어진 트리의 모든 노드에 대한 서브트리의 합을 찾을 수 있습니다.