इस ट्यूटोरियल में, हम एक प्रोग्राम पर चर्चा करेंगे जो बाइनरी ट्री को इस तरह बदलता है कि हर नोड अपने राइट सबट्री के सभी नोड्स का योग स्टोर करे।
इसके लिए हमें एक बाइनरी ट्री प्रदान की जाएगी। हमारा कार्य एक ऐसा ट्री वापस करना है जहां हर नोड उस नोड और उसके राइट सबट्री के योग के बराबर हो।
उदाहरण
#include <bits/stdc++.h>
using namespace std;
// ट्री की नोड संरचना
struct Node {
int data;
Node *left, *right;
};
// नया नोड बनाना
struct Node* createNode(int item) {
Node* temp = new Node;
temp->data = item;
temp->left = NULL;
temp->right = NULL;
return temp;
}
// नया बाइनरी ट्री बनाना
int rightsum_tree(Node* root) {
if (!root)
return 0;
if (root->left == NULL && root->right == NULL)
return root->data;
// लेफ्ट/राइट सबट्री के मान बदलना
int rightsum = rightsum_tree(root->right);
int leftsum = rightsum_tree(root->left);
// राइट सबट्री का योग जोड़ना
root->data += rightsum;
return root->data + leftsum;
}
// ट्री को इनऑर्डर पैटर्न में पार करना
void inorder(struct Node* node) {
if (node == NULL)
return;
inorder(node->left);
cout << node->data << " ";
inorder(node->right);
}
int main() {
struct Node* root = NULL;
root = createNode(1);
root->left = createNode(2);
root->right = createNode(3);
root->left->left = createNode(4);
root->left->right = createNode(5);
root->right->right = createNode(6);
rightsum_tree(root);
cout << "Updated Binary Tree:\n";
inorder(root);
return 0;
}
आउटपुट
Updated Binary Tree: 4 7 5 10 9 6