উত্তর:
বাইনারি ট্রি: প্রতিটি নোডে দুটি পর্যন্ত পাতা থাকে এমন গাছ
1
/ \
2 3
বাইনারি অনুসন্ধান বৃক্ষ: জন্য ব্যবহৃত অনুসন্ধানের । একটি বাইনারি ট্রি যেখানে বাম সন্তানের পিতামাতার নোডের চেয়ে কম মান সহ কেবল নোড থাকে এবং যেখানে ডান সন্তানের কেবল পিতামাতার চেয়ে বড় বা সমান মানযুক্ত নোড থাকে।
2
/ \
1 3
বাইনারি ট্রি দুটি শিশু (বাম শিশু এবং ডান চাইল্ড) সহ গাছের একটি বিশেষ ফর্ম। এটি কেবল বৃক্ষ কাঠামোর উপাত্তের প্রতিনিধিত্ব
বাইনারি অনুসন্ধান ট্রি (বিএসটি) একটি বিশেষ ধরণের বাইনারি ট্রি যা নিম্নলিখিত শর্তটি অনুসরণ করে:
একটি বাইনারি ট্রি নোড দিয়ে তৈরি, যেখানে প্রতিটি নোডে একটি "বাম" পয়েন্টার, একটি "ডান" পয়েন্টার এবং একটি ডেটা উপাদান থাকে। "রুট" পয়েন্টার গাছের শীর্ষতম নোডের দিকে নির্দেশ করে। বাম এবং ডান পয়েন্টারগুলি পুনরাবৃত্তভাবে উভয় পাশে ছোট "সাবট্রিজ "গুলিতে নির্দেশ করে। একটি নাল পয়েন্টার কোনও বাইনারি গাছের প্রতিনিধিত্ব করে যার কোনও উপাদান নেই - খালি গাছ। আনুষ্ঠানিক পুনরাবৃত্তি সংজ্ঞাটি: একটি বাইনারি গাছ হয় ফাঁকা (নাল পয়েন্টার দ্বারা উপস্থাপিত), বা একটি একক নোড দ্বারা তৈরি, যেখানে বাম এবং ডান পয়েন্টার (সামনে পুনরাবৃত্ত সংজ্ঞা) প্রতিটি বাইনারি গাছের দিকে প্রতি বিন্দু রয়েছে।
বাইনারি সার্চ ট্রি (বিএসটি) বা "অর্ডার করা বাইনারি ট্রি" হ'ল এক ধরণের বাইনারি ট্রি যেখানে নোডগুলি সাজানো থাকে: প্রতিটি নোডের জন্য, তার বাম সাবট্রির সমস্ত উপাদান নোডের চেয়ে কম থাকে (<), এবং সমস্ত উপাদান এর ডান সাবট্রিতে নোড (>) এর চেয়ে বড়।
5
/ \
3 6
/ \ \
1 4 9
উপরে প্রদর্শিত গাছটি বাইনারি অনুসন্ধানের গাছ - "মূল" নোড একটি 5 এবং তার বাম সাবট্রি নোডগুলি (1, 3, 4) <5 এবং এর ডান সাবট্রি নোড (6, 9)> 5 হয়। পুনরাবৃত্তভাবে, প্রতিটি সাবট্রিকে অবশ্যই বাইনারি অনুসন্ধানের গাছের সীমাবদ্ধতা মেনে চলতে হবে: (1, 3, 4) সাবট্রিতে, 3 টি মূল, 1 <3 এবং 4> 3।
সমস্যার সঠিক শব্দটির জন্য দেখুন - একটি "বাইনারি অনুসন্ধান গাছ" "বাইনারি ট্রি" থেকে আলাদা।
উপরের সবাই যেমন বাইনারি ট্রি এবং বাইনারি অনুসন্ধান গাছের মধ্যে পার্থক্য সম্পর্কে ব্যাখ্যা করেছে, আমি কেবল কীভাবে পরীক্ষা করব যে প্রদত্ত বাইনারি ট্রি বাইনারি অনুসন্ধানের গাছ কিনা তা পরীক্ষা করে দেখতে পারি।
boolean b = new Sample().isBinarySearchTree(n1, Integer.MIN_VALUE, Integer.MAX_VALUE);
.......
.......
.......
public boolean isBinarySearchTree(TreeNode node, int min, int max)
{
if(node == null)
{
return true;
}
boolean left = isBinarySearchTree(node.getLeft(), min, node.getValue());
boolean right = isBinarySearchTree(node.getRight(), node.getValue(), max);
return left && right && (node.getValue()<max) && (node.getValue()>=min);
}
আশা করি এটা তোমাকে সাহায্য করবে। দুঃখিত আমি যদি বিষয়টি থেকে সরে যাচ্ছি তবে আমি অনুভব করেছি যে এখানে এটি উল্লেখ করা ভাল।
বাইনারি ট্রি একটি ঘোরা ডাটা স্ট্রাকচার যা গঠিত নোড করতে পারে শুধুমাত্র আছে দুটি সন্তান রেফারেন্স।
অন্যদিকে বাইনারি অনুসন্ধান ট্রি ( বিএসটি ), বাইনারি ট্রি ডেটা কাঠামোর একটি বিশেষ রূপ যেখানে প্রতিটি নোড একটি তুলনামূলক মান থাকে এবং বাম এবং বৃহত্তর মূল্যবান বাচ্চাদের ডানদিকে সংযুক্ত ছোট ছোট মূল্যবান শিশুরা থাকে।
সুতরাং, সব বিএসটি এর দ্বারা বাইনারি ট্রি তবে শুধুমাত্র কিছু বাইনারি ট্রি গুলি হতে পারে ' বিএসটি । বিএসটি বাইনারি ট্রি একটি উপসেট হয় তা অবহিত করুন ।
সুতরাং, বাইনারি ট্রি চেয়ে একটি সাধারণ ডেটা-কাঠামোর বেশি বাইনারি অনুসন্ধান বৃক্ষ । এবং আপনাকে এটিও জানাতে হবে যে বাইনারি অনুসন্ধান ট্রি একটি বাছাই করা গাছ যেখানে জেনেরিক বাইনারি ট্রি সম্পর্কিত নিয়মের কোনও সেট নেই ।
একজন Binary Tree
যা না একটি BST
;
5
/ \
/ \
9 2
/ \ / \
15 17 19 21
একটি বাইনারি অনুসন্ধান গাছ যা বাইনারি ট্রিও ;
50
/ \
/ \
25 75
/ \ / \
20 30 70 80
বিএসটি - তে যে কোনও প্যারেন্ট নোডের জন্যও তা অবহিত করুন ;
সমস্ত বাম নোডের প্যারেন্ট নোডের মানের চেয়ে কম মান রয়েছে। উপরের উদাহরণে, 20 25, 25, 30 values মান সহ নোডগুলি যা 50 এর বাম দিকে ( বাম বংশধর ) অবস্থিত, 50 এর চেয়ে ছোট smaller
সমস্ত ডান নোডের প্যারেন্ট নোডের মানের চেয়ে বেশি মান রয়েছে। উপরের উদাহরণে, values 70, 75, 80 values মান সহ নোডগুলি যা 50 এর ডানদিকে ( ডান বংশধরদের ) অবস্থিত, 50 এর চেয়ে বেশি।
বাইনারি ট্রি নোডের জন্য এ জাতীয় কোনও নিয়ম নেই । বাইনারি ট্রি নোডের একমাত্র নিয়মের দুটি বাচ্চা হওয়া তাই এটি নিজেকে ব্যাখ্যা করে যে বাইনারি কেন বলা হয় ।
বাইনারি অনুসন্ধান ট্রি হ'ল এক বিশেষ ধরণের বাইনারি গাছ যা নীচের সম্পত্তিটি প্রদর্শন করে: যে কোনও নোডের জন্য এন এর বাম সাবট্রিতে প্রতিটি বংশধর নোডের মান এন এর মানের চেয়ে কম এবং ডান সাবট্রিতে প্রতিটি বংশজাত নোডের মান হয় n এর মানের চেয়ে বড়।
বাইনারি ট্রি
বাইনারি ট্রি এমন কিছু হতে পারে যার 2 বাচ্চা এবং 1 জন পিতা বা মাতা থাকে। এটি লিঙ্কযুক্ত তালিকা বা অ্যারে হিসাবে বা আপনার কাস্টম এপিআই সহ প্রয়োগ করা যেতে পারে। আপনি এটিতে আরও সুনির্দিষ্ট বিধি যুক্ত করতে শুরু করলে এটি আরও বিশেষ গাছ হয়ে যায় । সর্বাধিক পরিচিত বাস্তবায়ন হ'ল, বামদিকে ছোট নোড এবং ডানদিকে বৃহত্তর নোড যুক্ত করুন।
উদাহরণ হিসেবে বলা যায়, আকার 9 ও উচ্চতা 3 লেবেল বাইনারি গাছ, একটি রুট নোড যার মান 2. বৃক্ষ হল ভারসাম্যহীন এবং সাজানো । https://en.wikipedia.org/wiki/Binary_tree
উদাহরণস্বরূপ, বাম দিকে গাছটিতে, এ এর 6 টি শিশু রয়েছে {বি, সি, ডি, ই, এফ, জি}} এটি ডানদিকে বাইনারি গাছ রূপান্তরিত করা যেতে পারে।
বাইনারি অনুসন্ধান
বাইনারি অনুসন্ধান হ'ল কৌশল / অ্যালগরিদম যা নোড চেইনে নির্দিষ্ট আইটেম সন্ধান করতে ব্যবহৃত হয়। বাইনারি অনুসন্ধান বাছাই করা অ্যারেগুলিতে কাজ করে ।
বাইনারি অনুসন্ধান অ্যারের মাঝের উপাদানটির সাথে লক্ষ্য মানটির তুলনা করে ; যদি তারা অসম হয় তবে অর্ধেক যেখানে লক্ষ্যটি পড়ে থাকতে পারে তা অপসারণ করা হয় এবং এটি সফল না হওয়া অবধি বা বাকি অর্ধেকটি খালি না হওয়া পর্যন্ত অনুসন্ধানটি অর্ধেকের দিকে চালিয়ে যায়। https://en.wikipedia.org/wiki/Binary_search_algorithm
বাইনারি অনুসন্ধানের প্রতিনিধিত্বকারী একটি গাছ । এখানে অনুসন্ধান করা অ্যারেটি [20, 30, 40, 50, 90, 100] এবং লক্ষ্য মান 40 হয়।
বাইনারি অনুসন্ধান ট্রি
এটি বাইনারি গাছের একটি বাস্তবায়ন। এই জন্য বিশেষজ্ঞ অনুসন্ধানের ।
বাইনারি অনুসন্ধান ট্রি এবং বি-ট্রি ডেটা স্ট্রাকচারগুলি বাইনারি অনুসন্ধানের উপর ভিত্তি করে ।
বাইনারি সার্চ ট্রি (বিএসটি), কখনও কখনও অর্ডারযুক্ত বা সাজানো বাইনারি ট্রি নামে পরিচিত, এটি একটি বিশেষ ধরণের ধারক : ডেটা স্ট্রাকচার যা স্মৃতিতে "আইটেম" (যেমন সংখ্যা, নাম ইত্যাদি) সঞ্চয় করে। https://en.wikipedia.org/wiki/Binary_search_tree
মূলে 8 টি সহ 9 মাপের এবং গভীরতা 3 এর বাইনারি অনুসন্ধান গাছ। পাতা আঁকা হয় না।
এবং পরিশেষে সুপরিচিত ডেটা স্ট্রাকচার এবং আলগোরিদিমগুলির পারফরম্যান্স তুলনা করার জন্য দুর্দান্ত স্কিমা প্রয়োগ করা হয়েছে:
চিত্রটি অ্যালগরিদম থেকে নেওয়া হয়েছে (চতুর্থ সংস্করণ)
চাকার জন্য বা কোনও প্রদত্ত বাইনারি ট্রিটি পরীক্ষা করতে হয় বাইনারি অনুসন্ধান গাছটি এখানে বিকল্প বিকল্প।
তর্ক গাছ inorder ফ্যাশন (অর্থাত বাম শিশু -> মূল -> ডানে শিশু), দোকানের ভেদকরেখার নোড ডেটা একটি অস্থায়ী পরিবর্তনশীল বলতে দেয় টেম্প শুধু মধ্যে সংরক্ষণকারী আগে টেম্প পরীক্ষা wheather বর্তমান নোড এর ডাটা উচ্চতর তারপর আগের বা না । তাহলে শুধু বিরতি আউট, বৃক্ষ বাইনারি অনুসন্ধান বৃক্ষ আর ঢুকা untill শেষ নয়।
নীচে জাভা সহ একটি উদাহরণ দেওয়া হল:
public static boolean isBinarySearchTree(Tree root)
{
if(root==null)
return false;
isBinarySearchTree(root.left);
if(tree.data<temp)
return false;
else
temp=tree.data;
isBinarySearchTree(root.right);
return true;
}
বাইরে অস্থায়ী পরিবর্তনশীল বজায় রাখুন
বাইনারি অনুসন্ধান গাছে সমস্ত নোড একটি নির্দিষ্ট ক্রমে সাজানো হয় - একটি মূল নোডের বাম দিকের নোডের মূলের চেয়ে ছোট মান থাকে এবং নোডের ডানদিকে সমস্ত নোডের মানের চেয়ে বেশি মান থাকে রুট।