কম্পিউটার টিউটোরিয়াল

২-৩ ট্রি (2-3 Trees) - সার্চ ও ইনসার্শন C/C++-এ

পরিচয়

২-৩ ট্রি (2-3 Tree) হলো একটি ট্রি ডেটা স্ট্রাকচার যেখানে প্রতিটি ইন্টারনাল নোডের হয় ২টি চাইল্ড (২-নোড) এবং ১টি ডেটা এলিমেন্ট, অথবা ৩টি চাইল্ড (৩-নোড) এবং ২টি ডেটা এলিমেন্ট থাকে।

সংজ্ঞা

  • ২-নোড: ১টি ডেটা এলিমেন্ট এবং ২টি চাইল্ড।
  • ৩-নোড: ২টি ডেটা এলিমেন্ট এবং ৩টি চাইল্ড।
  • T হলো ২-৩ ট্রি যদি নিচের শর্তগুলো মেনে চলে:
    • T খালি।
    • T হলো ২-নোড ডেটা a সহ। লেফট চাইল্ড L, রাইট চাইল্ড R। L ও R সমান হাইটের নন-এমপ্টি ২-৩ ট্রি। a, L-র সব এলিমেন্ট থেকে বড় এবং R-র সব এলিমেন্ট থেকে ছোট বা সমান।
    • T হলো ৩-নোড ডেটা a, b সহ (a < b)। লেফট L, মিডল M, রাইট R। L, M, R সমান হাইটের নন-এমপ্টি ২-৩ ট্রি। a, L-র সব এলিমেন্ট থেকে বড় এবং M-র সব এলিমেন্ট থেকে ছোট বা সমান। b, M-র সব এলিমেন্ট থেকে বড় এবং R-র সব এলিমেন্ট থেকে ছোট বা সমান।

বৈশিষ্ট্য

  • প্রতিটি ইন্টারনাল নোড ২-নোড বা ৩-নোড।
  • সকল লীফ একই লেভেলে।
  • সকল ডেটা সো্র্টেড অর্ডারে থাকে।

অপারেশন

সার্চিং (Searching)

বাইনারি সার্চ ট্রি-র মতোই। ডেটা এলিমেন্টগুলো অর্ডার্ড থাকায় সার্চ ফাংশন সঠিক সাবট্রি-তে দিয়ে নির্দিষ্ট নোডে পৌঁছায়।

  1. T খালি হলে d নেই।
  2. r = T-এর রুট।
  3. r লীফ হলে: d r-তে নেইলে T-তেও নেই। থাকে তবে পাওয়া গেল।
  4. r ২-নোড হলে (লেফট L, রাইট R, ডেটা e):
    • d == e হলে পাওয়া গেল।
    • d < e হলে T = L সেট করে ধাপ ২-এ ফিরুন।
    • d > e হলে T = R সেট করে ধাপ ২-এ ফিরুন।
  5. r ৩-নোড হলে (লেফট L, মিডল M, রাইট R, ডেটা a < b):
    • d == a বা b হলে পাওয়া গেল।
    • d < a হলে T = L।
    • a < d < b হলে T = M।
    • d > b হলে T = R।

ইনসার্শন (Insertion)

কি-এর সঠিক লোকেশন খুঁজে সেটি অ্যাড করা হয়। নোড ৪-নোড হলে দুটি ২-নোডে ভাগ করে মিডল কি প্যারেন্টে পাঠানো হয়। প্যারেন্টও ৪-নোড হলে সেটিও ভাগ হয়, রুট পর্যন্ত প্রোপাগেট হতে পারে। এই প্রক্রিয়া O(log n) টাইম নেয় কারণ ট্রি পারফেক্টলি बैলেন্সড।

নিচের ডায়াগ্রামে ৩টি সম্ভাব্য কেস দেখানো হয়েছে।

২-৩ ট্রি (2-3 Trees) - সার্চ ও ইনসার্শন C/C++-এ

২-৩ ট্রি (2-3 Trees) - সার্চ ও ইনসার্শন C/C++-এ

  1. C++-এ দুটি বাইনারি সার্চ ট্রির সব উপাদান

  2. C++-এ Binary Search Tree-এ নোড ইনসার্ট করা

  3. C++-এ ইউনিক বাইনারি সার্চ ট্রি গণনা

  4. C++-এ ইউনিক বাইনারি সার্চ ট্রি II - সব ট্রি জেনারেট করা