আপডেট

Monday, March 30, 2015

বাইনারি ট্রি

                       
     বাইনারি ট্রি 

  • বাইনারি ট্রি (Binary Tree): যেসব ট্রি তে সাবট্রি দুটির বেশী থাকেনা তাকে বাইনারি ট্রি বলে। অর্থাৎ, যেকোন নোডের সাবট্রি ০,১,২ যেকোনটি হতে পারে। 
বাইনারি ট্রি 
বাইনারি  ট্রি আবার দু প্রকারঃ 

1. Complete binary Tree: যেসকল বাইনারি ট্রি বাম পাশ থেকে পূর্ণ হয়ে ডানপাশে এসে শেষ হয় তাকে কমপ্লিট বাইনারি ট্রি বলে ।

2. Full Binary Tree: যেসকল বাইনারি ট্রি'র প্রত্যেকটি নোডে দুইটা করে সাব ট্রি থাকে তাকে ফুল বাইনারি ট্রি বলে। দুইটার কম থাকলে তা কখনো Full binary Tree হবেনা। 

• Maximum Number of node On a level: কোন লেবেলে বড়জোর 2^i সংখ্যক নোড থাকতে পারে। যেখানে i হল লেবেল নাম্বার!  
যখন, i=0; জিরো লেবেলে 1 টা নোড ; 
যখন, i=1; 1 নং লেবেল 2 টা নোড থাকতে পারবে। এভাবে যেতে থাকবে। 

• Maximum Number of node on a Tree: কোন ট্রিতে সরবোচ্চ নোড সংখ্যা হবে 2^0 থেকে শুরু করে 2^h পর্যন্ত সংখ্যাগুলোর যোগফল। যেখানে, H হল সরবোচ্চ লেবেল নাম্বার। 
i.e: fig-2 
2^0+2^1+2^2=7 
অর্থাৎ, দ্বিতীয় চিত্রে সরবচ্চ ৭ টি নোড থাকতে পারবে। 

Tree To array: ট্রি থেকে অ্যারেতে রুপান্তর সময় কয়েকটা জিনিস খেয়াল রাখতে হবে। 
১। প্রথবার root->left->right তারপর থেকে left->right ; এভাবে লেবেল বাই লেবেল ট্র্যাভারস করবে । 
২। সবসময় ট্রি এর প্রতিটি নোডকে দুইটা সাবট্রি(child) বিবেচনা করতে হবে। মানে হল প্রত্যেকটি লেবেল কমপ্লিট বিবেচনা করতে হবে(2^i) । যেমন, 0 লেবেলে 2^1  টি 1নং লেবেলে 2^1 টি ,2 নং লেবেলে 2^2 টি এভাবে। যদি কোন লেবেল অসম্পূর্ণ থাকে তাহলে সে যায়গায় খালি রেখে অ্যারে সম্পূর্ণ করতে হবে। চিত্রটি লক্ষ করলে ব্যাপারটা ক্লিয়ার হবে  । 

চিত্রঃ ট্রি থেকে অ্যারে তে রুপান্তর 
প্রথমে রুট থেকে শুরু হয়েছে। তারপর ১ নং লেবেলে বাম থেকে শুরু করে ডানে এসে শেষ হল। তারপর দুই নং লেবেলে, এভাবে অ্যারে শেষ হল । এখন প্রশ্ন হল যদি ট্রি টি full binary tree না হত তাহলে কি হত? মানে যদি উপরের ট্রি তে কোন একটা নোড না থাকতো ? সেক্ষেত্রে ওই নোডের যায়গাটি ফাঁকা রয়ে থেকে যেতো ! চিত্রটি খেয়াল করিঃ 
চিত্রে I নাই। তাই I এর যায়গাটি ফাঁকা আছে। এভাবে ট্রি থেকে অ্যারেতে রুপান্তর করা হয়। একই কৌশল ব্যাবহার করে অ্যারে  থেকে ট্রি তে রুপান্তর করা হয়।  আজ এ পর্যন্তই !