हम सीख सकते हैं कि हम AVL ट्री में नोड कैसे डाल सकते हैं। AVL ट्री में इंसर्शन BST के समान ही होते हैं, जब भी हम ट्री को नीचे ले जाते हैं तो इंसर्ट के दौरान हमें बस एक अतिरिक्त स्टेप को बैलेंस ट्री कहा जाता है।
इसके लिए संतुलन कारक की गणना करने की आवश्यकता होती है जिसे हमने पहले ही देखा था। और कॉन्फ़िगरेशन के अनुसार, हमें उपयुक्त रोटेशन विधियों को कॉल करने की आवश्यकता है। उपरोक्त स्पष्टीकरण की सहायता से ये काफी सहज हैं।
हम पुनरावर्ती कॉल के लिए फिर से एक वर्ग विधि और एक सहायक फ़ंक्शन बनाते हैं -
उदाहरण
<पूर्व>सम्मिलित करें (डेटा) { नोड =नया यह दें। नोड (डेटा); // जांचें कि क्या पेड़ खाली है अगर (this.root ===null) {// पहले तत्व के रूप में डालें this.root =node; } और {insertHelper (यह, यह। रूट, नोड); }}पूर्व>सहायक विधि
फ़ंक्शन इंसर्ट हेल्पर (स्व, रूट, नोड) {अगर (रूट ===नल) {रूट =नोड; } और अगर (नोड.डेटा <रूट.डेटा) {// बाएं जाएं! रूट.लेफ्ट =इन्सर्ट हेल्पर (सेल्फ, रूट.लेफ्ट, नोड); // बैलेंस फैक्टर की जांच करें और उचित रोटेशन करें यदि (root.left!==null &&self.getBalanceFactor(root)> 1) {if (node.data> root.left.data) { root =रोटेशनएलएल (रूट); } और {रूट =रोटेशनएलआर (रूट); } } } और अगर (नोड.डेटा> रूट.डेटा) {// राइट गो! जड़। राइट =इंसर्ट हेल्पर (स्वयं, रूट। राइट, नोड); // बैलेंस फैक्टर की जांच करें और उचित रोटेशन करें यदि (root.right!==null &&self.getBalanceFactor(root) <-1) {if (node.data> root.right.data) { रूट =रोटेशनआरआर (रूट); } और {रूट =रोटेशनआरएल (रूट); } } } रूट लौटाएं;}
आप -
. का उपयोग करके इसका परीक्षण कर सकते हैंउदाहरण
AVL =नया AVLTree (); AVL.insert (10); AVL.insert (15); AVL.insert (5); AVL.insert (50); AVL.insert (3); AVL.insert( 7);AVL.insert(12);AVL.inOrder();
आउटपुट
यह आउटपुट देगा -
35710121550