Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++의 이진 트리에서 최대 부모 자식 합계

<시간/>

이 자습서에서는 이진 트리에서 최대 부모 자식 합계를 찾는 프로그램에 대해 설명합니다.

이를 위해 이진 트리가 제공됩니다. 우리의 임무는 부모 노드와 자식 노드를 더하고 마지막으로 모든 것의 최대값을 찾아 인쇄하는 것입니다.

예시

#include <iostream>
using namespace std;
struct Node {
   int data;
   struct Node *left, *right;
};
//inserting nodes
struct Node* newNode(int n) {
   struct Node* root = new Node();
   root->data = n;
   root->left = root->right = NULL;
   return root;
}
int maxSum(struct Node* root) {
   if (root == NULL)
      return 0;
   int res = maxSum(root->left);
   if (root->left != NULL && root->right != NULL) {
      int sum = root->data + root->left->data + root->right->data;
      res = max(res, sum);
   }
   return max(res, maxSum(root->right));
}
int main() {
   struct Node* root = newNode(15);
   root->left = newNode(16);
   root->left->left = newNode(8);
   root->left->left->left = newNode(55);
   root->left->right = newNode(67);
   root->left->right->left = newNode(44);
   root->right = newNode(17);
   root->right->left = newNode(7);
   root->right->left->right = newNode(11);
   root->right->right = newNode(41);
   cout << maxSum(root);
   return 0;
}

출력

91