Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

Maximum parent children sum in Binary tree in C++


ในบทช่วยสอนนี้ เราจะพูดถึงโปรแกรมหาผลรวมพ่อแม่-ลูกสูงสุดในต้นไม้ไบนารี

เราจะได้รับต้นไม้ไบนารี งานคือบวกโหนดพ่อแม่กับลูกของมันและหาค่าสูงสุดของทั้งหมดแล้วพิมพ์ออกมา

ตัวอย่างโค้ด

#include <iostream>
using namespace std;

struct Node {
    int data;
    struct Node *left, *right;
};

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