আমি মনে করি আপনার পৃষ্ঠার তৈরিটি উল্টো দিকে আছে। যখন কোনও নোড বিভক্ত হয় তখন এটি হায়ারার্কির নিচে আরও নোড তৈরি করে না (আপনার নামের মধ্যে পুত্র নোড)। পরিবর্তে এটি মূলের দিকে আরও উপরের দিকে তৈরি করে । বইটি যেমন বলেছে
নোট করুন যে বৃদ্ধির গাছের শীর্ষে রয়েছে এবং এটি একটি বি-গাছের একটি স্বতন্ত্র বৈশিষ্ট্য যা গুরুত্বপূর্ণ বৈশিষ্ট্যগুলি নিশ্চিত করে যে এটি সর্বদা একই স্তরে সমস্ত পাতা থাকে এবং প্রতিটি নোড অন্তত পৃথক থাকে ensure 50% পূর্ণ।
(আমার জোর।)
লিঙ্কযুক্ত ইবুক থেকে:
সংজ্ঞা 5.1 AB – অর্ডার মি গাছ (এম ≥ 3) ... প্রতিটি নোডে সর্বাধিক মি - 1 কী থাকে
অনুশীলনটি মি = 3 এর জন্য, তাই নোডের জন্য সর্বাধিক 2 টি কী।
প্রথম দুটি কী সহজ - তারা প্রথম পৃষ্ঠায় যায়:
A:[1,2]
আমি ASCII শিল্প ব্যবহার করতে যাচ্ছি। আমি প্রতিটি পৃষ্ঠাগুলি তাদের তৈরি ক্রম অনুসারে লেবেল করব এবং পৃষ্ঠার মধ্যে কী / পয়েন্টার দেখাব। সুতরাং পৃষ্ঠা পি কী মান 1 এবং কে 2 থাকবে P:[k1,k2]
।
এখন কী 3 বরাবর আসে। বিভাগ 5.2.1 অনুযায়ী ... সন্নিবেশ, প্রথম কাজটি অনুসন্ধান করা। এটি নির্ধারণ করে যে কী 3 পৃষ্ঠায় থাকা উচিত - আমাদের কেবলমাত্র পৃষ্ঠা। আরও "যদি [সেই নোড] পূর্ণ হয় তবে এটি দুটি নোডে বিভক্ত হবে" " পৃষ্ঠাটি পূর্ণ, সুতরাং এটি অবশ্যই বিভক্ত হবে। আমরা এখন আছে
A:[1,2] B:[3, ]
তবে এ তো গাছ নয়! বই যেমন বলে:
[নতুন নোড] এর পয়েন্টারটি, .. [বর্তমান নোডের] এর পিতা নোডের মধ্যে isোকানো হয়েছে [এই নোডে [অর্থাৎ পিতা নোড] সন্নিবেশ অপারেশনটি পুনরাবৃত্তি করছে। এই বিভাজন এবং সরানোর প্রক্রিয়াটি মূল পর্যন্ত প্রয়োজন পর্যন্ত চালিয়ে যেতে পারে এবং যদি এটি বিভাজন করা আবশ্যক তবে একটি নতুন মূল নোড তৈরি হবে ..
(প্রসেসিং দেখানোর জন্য আমার জোর গাছের পাতা নীচে না মূলের দিকে চালিয়ে যায়))
সুতরাং আমাদের অবশ্যই নতুন পৃষ্ঠায় (খ) একটি পয়েন্টার রেখে দিতে হবে বর্তমান পৃষ্ঠার (এ) পিতাকে। একটি নতুন মূল নোড থাকতে হবে:
C:[2,3]
/ \
A:[1,2] B:[3, ]
আমার কোনও শিশু (পুত্র) নোডের সর্বাধিক মানটির দিকে ইশারা করে নন-পাতাগুলি পাতায় পয়েন্টার রয়েছে। আপনার লিঙ্কযুক্ত পাঠ্য এটি আলাদাভাবে করতে পারে তবে ফলাফলটি সমান হবে।
মূল মান 4 উপস্থিত; অ্যালগরিদম অনুসরণ করে আমরা কোন পৃষ্ঠায় থাকা উচিত তা সন্ধান করতে চাই। এটি পৃষ্ঠা বি হওয়া উচিত এটির জন্য জায়গা রয়েছে তাই আমরা সেই পৃষ্ঠাটি এবং পৃষ্ঠা সিটিতে পয়েন্টারটি আপডেট করব:
C:[2,4]
/ \
A:[1,2] B:[3,4]
পরবর্তী আমরা কী 5 সন্নিবেশ করবো এটি বি পৃষ্ঠাতে যাওয়া উচিত তবে এটি পূর্ণ। সুতরাং এটি বিভক্ত হয়
C:[2,4]
/ \
A:[1,2] B:[3,4] D:[5, ]
আমাদের অবশ্যই পিতা নোড আপডেট করতে হবে। এটি খুব পূর্ণ, তাই এটি বিভক্ত হয়:
C:[2,4] E:[5, ]
/ \ \
A:[1,2] B:[3,4] D:[5, ]
বিভাজনটি প্রচার করে এবং একটি নতুন মূল নোড ফর্ম:
F:[4,5]
/ \
C:[2,4] E:[5, ]
/ \ \
A:[1,2] B:[3,4] D:[5, ]
উপরের দিকে বাড়ার সাথে গাছ প্রতিটি শাখায় অভিন্ন গভীরতা বজায় রাখে। অনুমানযোগ্য পারফরম্যান্সের জন্য এটি গুরুত্বপূর্ণ। (কেউ কেউ বলছেন যে বি-ট্রি এ বিটি একই কারণে "ভারসাম্যপূর্ণ"।)
দ্বিতীয় অংশ হিসাবে - "কম উচ্চতার গাছ থাকতে আলাদা কী দিয়ে কীগুলি দিয়ে রেকর্ডগুলি প্রবেশ করা সম্ভব?" নোডের জন্য 5 কী এবং দুটি কী সহ আমাদের সমস্ত মান ধরে রাখতে এবং গাছ গঠনের জন্য 3 টি উচ্চতা কমপক্ষে 3 টি পাত নোডের প্রয়োজন। সুতরাং আমার ব্যবস্থা প্রদত্ত ডেটা, সিকোয়েন্স এবং অ্যালগরিদমের জন্য সর্বোত্তম।
বইটি আমি যা ব্যবহার করি তার জন্য খুব আলাদা পয়েন্টার বিন্যাস এবং একটি পৃথক পৃষ্ঠা বিভাজন বিন্যাস ব্যবহার করে। এটি উল্লেখযোগ্য হবে, অংশ-পূর্ণ পৃষ্ঠাগুলির দিকে পরিচালিত করবে। ৪২ পৃষ্ঠায় "ডেটা লোডিং" নামে একটি বিভাগ রয়েছে যা কী সিকোয়েন্সটি লোড করে পূর্ণাঙ্গ পৃষ্ঠাগুলি কীভাবে অর্জন করতে পারে তা দেখায় যে আমার কান্ড সমর্থন করে। যাইহোক, আমি আশা করি আমি আপনাকে যথেষ্ট পয়েন্টার দিয়েছি এবং আপনি নিজের জন্য এটির কাজ করতে বইটির পয়েন্টার কাঠামোটি ব্যবহার করতে সক্ষম হবেন।
আমি কীভাবে একটি বি-ট্রি বৃদ্ধি করে তার এই ইন্টারেক্টিভ সিমুলেশনটি জুড়ে এসেছি ।