Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

यह जांचने के लिए प्रोग्राम कि कोई पेड़ ऊंचाई संतुलित है या नहीं C++

मान लीजिए हमारे पास एक बाइनरी ट्री है; हमें जांचना है कि इसकी ऊंचाई संतुलित है या नहीं। हम जानते हैं कि एक संतुलित ऊंचाई वाले पेड़ के लिए, पेड़ में प्रत्येक नोड के लिए, इसके बाएं उपट्री की ऊंचाई और इसके दाएं उपट्री की ऊंचाई का पूर्ण अंतर 0 या 1 है।

तो, अगर इनपुट पसंद है

यह जांचने के लिए प्रोग्राम कि कोई पेड़ ऊंचाई संतुलित है या नहीं C++

तो आउटपुट सही होगा

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • फ़ंक्शन को परिभाषित करें dfs(), यह नोड लेगा,

  • यदि नोड शून्य है, तो -

    • वापसी 0

  • l :=1 + dfs (नोड के बाएँ)

  • r :=1 + dfs (नोड के दाएं)

  • अगर |एल - आर|> 1, फिर -

    • रिट :=असत्य

  • एल और आर की अधिकतम वापसी

  • मुख्य विधि से निम्न कार्य करें -

  • रेट :=सच

  • dfs(रूट)

  • वापसी रिट

आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -

उदाहरण

#include <bits/stdc++.h>
using namespace std;
class TreeNode {
   public:
   int val;
   TreeNode *left;
   TreeNode *right;
   TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
class Solution {
   public:
   bool ret;
   int dfs(TreeNode* node){
      if(!node)
         return 0;
      int l = 1 + dfs(node->left);
      int r = 1 + dfs(node->right);
      if(abs(l - r) > 1)
         ret = false;
      return max(l, r);
   }
   bool isBalanced(TreeNode* root) {
      ret = true;
      dfs(root);
      return ret;
   }
};
main(){
   Solution ob;
   TreeNode *root = new TreeNode(25);
   root->left = new TreeNode(19);
   root->right = new TreeNode(4);
   root->left->left = new TreeNode(9);
   root->left->right = new TreeNode(7);
   cout << (ob.isBalanced(root));
}

इनपुट

TreeNode *root = new TreeNode(25);
root->left = new TreeNode(19);
root->right = new TreeNode(4);
root->left->left = new TreeNode(9);
root->left->right = new TreeNode(7);

आउटपुट

1

  1. C++ में दिए गए बाइनरी ट्री को प्रून करने का कार्यक्रम

    मान लीजिए कि हमारे पास एक बाइनरी ट्री है, जहां प्रत्येक नोड का मान या तो 0 या 1 है। हमें वही ट्री ढूंढ़ना है जहां प्रत्येक उपट्री जिसमें 1 नहीं है, को हटा दिया गया है। तो अगर पेड़ जैसा है - इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - एक पुनरावर्ती विधि को हल करें () परिभाषित करें, यह नोड

  1. जाँच करें कि दिया गया ट्री ग्राफ C++ में रैखिक है या नहीं

    यहां हम देखेंगे कि कैसे जांचा जाता है कि एक ट्री ग्राफ रैखिक है या नहीं। एक रैखिक वृक्ष ग्राफ को एक पंक्ति में व्यक्त किया जा सकता है, मान लीजिए कि यह एक रैखिक वृक्ष ग्राफ का एक उदाहरण है। लेकिन यह रैखिक नहीं है - यह जांचने के लिए कि ग्राफ रैखिक है या नहीं, हम दो शर्तों का पालन कर सकते हैं यद

  1. C++ प्रोग्राम यह जांचने के लिए कि कोई ग्राफ़ मजबूती से जुड़ा है या नहीं

    निर्देशित ग्राफ़ में घटकों को दृढ़ता से जुड़ा हुआ कहा जाता है, जब एक घटक में प्रत्येक जोड़ी के बीच एक पथ होता है। इस एल्गोरिथम को हल करने के लिए, सबसे पहले, प्रत्येक शीर्ष का अंतिम समय प्राप्त करने के लिए DFS एल्गोरिथ्म का उपयोग किया जाता है, अब ट्रांसपोज़्ड ग्राफ़ का अंतिम समय ज्ञात करें, फिर शी