Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> सी प्रोग्रामिंग

दिए गए BST में प्रत्येक नोड में सभी बड़े मान जोड़ें

यहां हम एक दिलचस्प समस्या देखेंगे, जहां हम किसी दिए गए बाइनरी सर्च ट्री में प्रत्येक नोड में अधिक मान जोड़ेंगे। तो प्रारंभिक और अंतिम पेड़ नीचे जैसा दिखेगा -


दिए गए BST में प्रत्येक नोड में सभी बड़े मान जोड़ें

एल्गोरिदम

bstUpdate(रूट, योग) -

Begin
   if root is null, then stop
   bstUpdate(right of room, sum)
   sum := sum + value of root
   update root value using sum
   bstUpdate(left of room, sum)
End

उदाहरण

#include<iostream>
using namespace std;
class Node {
   public:
      int data;
      Node *left, *right;
   };
   Node *getNode(int item) {
      Node *newNode = new Node();
      newNode->data = item;
      newNode->left = newNode->right = NULL;
      return newNode;
}
void updateBST(Node *root, int *sum) {
   if (root == NULL)
      return;
   updateBST(root->right, sum); //update right sub tree
   *sum = *sum + root->data;
   root->data = *sum; //update root data
   updateBST(root->left, sum); //update left sub tree
}
void BSTUpdate(Node *root) {
   int sum = 0;
   updateBST(root, &sum);
}
void inorder(Node *root) {
   if (root != NULL) {
      inorder(root->left);
      cout<<root->data<<" ";
      inorder(root->right);
   }
}
Node* insert(Node* node, int data) {
   if (node == NULL)
      return getNode(data);
   if (data <= node->data) //go to left
      node->left = insert(node->left, data);
   else //go to right
      node->right = insert(node->right, data);
   return node;
}
int main() {
   int data[] = {50, 30, 20, 40, 70, 60, 80};
   int n = sizeof(data)/sizeof(data[0]);
   Node *root = NULL;
   for(int i = 0; i < n; i++) {
      root = insert(root, data[i]);
   }
   BSTUpdate(root);
   inorder(root);
}

आउटपुट

350 330 300 260 210 150 80

  1. सी ++ में दिए गए सेट में मौजूद प्रत्येक नोड से सभी पहुंच योग्य नोड्स खोजें

    मान लीजिए कि हमारे पास एक अप्रत्यक्ष ग्राफ और शिखर का एक सेट है; हमें दिए गए सेट में मौजूद प्रत्येक शीर्ष से सभी पहुंच योग्य नोड्स को ढूंढना है। तो, अगर इनपुट पसंद है तब आउटपुट [1,2,3] और [4,5] होगा क्योंकि ये दो जुड़े हुए घटक हैं। इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - नोड्स :=ग्राफ

  1. C++ में दिए गए नोड के उप-वृक्ष में सभी नोड्स का XOR

    इस समस्या में, हमें एक n ट्री दिया जाता है और कुछ प्रश्न हैं जो ट्री के नोड हैं। हमारा काम दिए गए नोड द्वारा बनाए गए सब-ट्री के सभी नोड्स के XOR को प्रिंट करना है। समस्या को समझने के लिए एक उदाहरण लेते हैं, प्रश्न - {1, 6, 5} आउटपुट - 0 0 5 स्पष्टीकरण - 1^6^3^2^4^7^5 6^2^4 5 इस समस्या को हल क

  1. C++ में दिए गए BST में प्रत्येक नोड में सभी बड़े मान जोड़ें?

    एक BST या बाइनरी सर्च ट्री बाइनरी ट्री का एक रूप है जिसमें सभी बाएँ नोड छोटे होते हैं और सभी दाएँ नोड मूल मान से अधिक होते हैं। इस समस्या के लिए, हम एक बाइनरी ट्री लेंगे और उसमें वर्तमान नोड से बड़े सभी मान जोड़ेंगे। समस्या बीएसटी में प्रत्येक नोड में सभी बड़े मान जोड़ें को सरल बनाया गया है क्योंकि