বাইনারি ট্রি এবং বাইনারি অনুসন্ধান গাছের মধ্যে পার্থক্য


322

কেউ দয়া করে বাইনারি ট্রি এবং বাইনারি অনুসন্ধান গাছের মধ্যে পার্থক্যটি উদাহরণ সহ ব্যাখ্যা করতে পারেন ?

উত্তর:


566

বাইনারি ট্রি: প্রতিটি নোডে দুটি পর্যন্ত পাতা থাকে এমন গাছ

  1
 / \
2   3

বাইনারি অনুসন্ধান বৃক্ষ: জন্য ব্যবহৃত অনুসন্ধানের । একটি বাইনারি ট্রি যেখানে বাম সন্তানের পিতামাতার নোডের চেয়ে কম মান সহ কেবল নোড থাকে এবং যেখানে ডান সন্তানের কেবল পিতামাতার চেয়ে বড় বা সমান মানযুক্ত নোড থাকে।

  2
 / \
1   3

14
@ পেট: এটি একটি ধারণাগত জিনিস, আপনি অগত্যা কখনও সম্পূর্ণরকম নিয়ন্ত্রণহীন এমন কোনও জিনিস তৈরি করবেন না। তবে, প্রচুর অ-অনুসন্ধানের বাইনারি গাছ রয়েছে যা অন্য কোনও উপায়ে বিশেষ, যেমন বাইনারি হিপস।
user541686

19
@ পেটের বিরি গাছগুলিতে অবশ্যই তুলনামূলক ডেটা থাকতে হবে না, অনেকগুলি (অ-অনুসন্ধান) বাইনারি গাছ বীজগণিতের ভাবটি পার্স করার জন্য ব্যবহৃত হয়, বাইনারি ট্রি অপারেটরকে নোড এবং সংখ্যাগত মান হিসাবে স্থাপন করে একটি ইনফিক্স নোটেশন পার্সার লিখতে পারে পাতাগুলি হিসাবে
জেবয়

2
@ জবয়: যদিও সে ক্ষেত্রে তারা বাইনারি গাছ হতে পারবে না। (যেমন ইউনিারি অপারেটরদের দু'টি বাচ্চা থাকতে পারে না)) আমি অনিচ্ছাকৃত বাইনারি গাছের ব্যবহারিক ব্যবহারের ক্ষেত্রে সত্যিই ভাবতে পারি না, এজন্যই আমি এই মন্তব্য করেছি।
ব্যবহারকারী541686

2
দুর্দান্ত এবং সাধারণ। ভিজ্যুয়াল উদাহরণের জন্য +1 :)
আন্দ্রেই কনস্টান্টিনভ

@ মেহরদাদ একটি বাইনারি গাছে প্রতি নোডে এক বা দুটি বাচ্চা থাকে। এক্সপ্রেশন গাছ একটি নিখুঁত উদাহরণ। একটি বাইনারি অনুসন্ধান বৃক্ষ এছাড়াও যদি না তা পরিপূর্ণ বলে, যা শুধুমাত্র উপাদানের নির্দিষ্ট সংখ্যার ঘটতে পারে ঘটে, নোড প্রতি এক বা দুই সন্তান রয়েছে।
লার্নের মারকুইস

56

বাইনারি ট্রি দুটি শিশু (বাম শিশু এবং ডান চাইল্ড) সহ গাছের একটি বিশেষ ফর্ম। এটি কেবল বৃক্ষ কাঠামোর উপাত্তের প্রতিনিধিত্ব

বাইনারি অনুসন্ধান ট্রি (বিএসটি) একটি বিশেষ ধরণের বাইনারি ট্রি যা নিম্নলিখিত শর্তটি অনুসরণ করে:

  1. বাম চাইল্ড নোড তার পিতামাতার নোডের চেয়ে ছোট
  2. ডান চাইল্ড নোড তার পিতামাতার নোডের চেয়ে বড়

23
এই শর্তগুলি যথেষ্ট নয়। পুরো বাম সাবট্রিতে অবশ্যই পিতামাতার চেয়ে কম কী থাকতে হবে না এবং পুরো ডান সাবট্রিতে অবশ্যই বৃহত্তর নোড থাকতে হবে।
লার্নের মারকুইস

1
@ ইজেপি আপনি কি আপনার মন্তব্যটি বিস্তারিতভাবে বর্ণনা করতে পারেন? পুরো সাবট্রি বলতে কী বোঝ? আপনার অর্থ সাবট্রির সমস্ত মান বাম পাশে রুট করার চেয়ে কম হওয়া উচিত? এবং সমস্ত মানগুলি ডান পাশের মূল মানের চেয়ে বড় হওয়া উচিত?
আসিফ মোশতাক

দ্বিতীয় লিঙ্কটি অনুসরণ করে, "যাচাইকরণ" বিভাগটি পড়ুন এবং এটি পরিষ্কার হবে।
রব

38

একটি বাইনারি ট্রি নোড দিয়ে তৈরি, যেখানে প্রতিটি নোডে একটি "বাম" পয়েন্টার, একটি "ডান" পয়েন্টার এবং একটি ডেটা উপাদান থাকে। "রুট" পয়েন্টার গাছের শীর্ষতম নোডের দিকে নির্দেশ করে। বাম এবং ডান পয়েন্টারগুলি পুনরাবৃত্তভাবে উভয় পাশে ছোট "সাবট্রিজ "গুলিতে নির্দেশ করে। একটি নাল পয়েন্টার কোনও বাইনারি গাছের প্রতিনিধিত্ব করে যার কোনও উপাদান নেই - খালি গাছ। আনুষ্ঠানিক পুনরাবৃত্তি সংজ্ঞাটি: একটি বাইনারি গাছ হয় ফাঁকা (নাল পয়েন্টার দ্বারা উপস্থাপিত), বা একটি একক নোড দ্বারা তৈরি, যেখানে বাম এবং ডান পয়েন্টার (সামনে পুনরাবৃত্ত সংজ্ঞা) প্রতিটি বাইনারি গাছের দিকে প্রতি বিন্দু রয়েছে।

বাইনারি সার্চ ট্রি (বিএসটি) বা "অর্ডার করা বাইনারি ট্রি" হ'ল এক ধরণের বাইনারি ট্রি যেখানে নোডগুলি সাজানো থাকে: প্রতিটি নোডের জন্য, তার বাম সাবট্রির সমস্ত উপাদান নোডের চেয়ে কম থাকে (<), এবং সমস্ত উপাদান এর ডান সাবট্রিতে নোড (>) এর চেয়ে বড়।

    5
   / \
  3   6 
 / \   \
1   4   9    

উপরে প্রদর্শিত গাছটি বাইনারি অনুসন্ধানের গাছ - "মূল" নোড একটি 5 এবং তার বাম সাবট্রি নোডগুলি (1, 3, 4) <5 এবং এর ডান সাবট্রি নোড (6, 9)> 5 হয়। পুনরাবৃত্তভাবে, প্রতিটি সাবট্রিকে অবশ্যই বাইনারি অনুসন্ধানের গাছের সীমাবদ্ধতা মেনে চলতে হবে: (1, 3, 4) সাবট্রিতে, 3 টি মূল, 1 <3 এবং 4> 3।

সমস্যার সঠিক শব্দটির জন্য দেখুন - একটি "বাইনারি অনুসন্ধান গাছ" "বাইনারি ট্রি" থেকে আলাদা।


@ গ্যাব্রিয়েল স্ট্যাপলস গাছের কাঠামো যুক্ত করেছে।
গৌরব বোরোল

14

উপরের সবাই যেমন বাইনারি ট্রি এবং বাইনারি অনুসন্ধান গাছের মধ্যে পার্থক্য সম্পর্কে ব্যাখ্যা করেছে, আমি কেবল কীভাবে পরীক্ষা করব যে প্রদত্ত বাইনারি ট্রি বাইনারি অনুসন্ধানের গাছ কিনা তা পরীক্ষা করে দেখতে পারি।

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);

}

আশা করি এটা তোমাকে সাহায্য করবে। দুঃখিত আমি যদি বিষয়টি থেকে সরে যাচ্ছি তবে আমি অনুভব করেছি যে এখানে এটি উল্লেখ করা ভাল।


1
বাম বা ডান সাবট্রি ফাঁকা থাকতে পারে। আপনার কোড সেই কেসটি সঠিকভাবে পরিচালনা করে না।
লার্নের মারকুইস

11

বাইনারি ট্রি একটি ঘোরা ডাটা স্ট্রাকচার যা গঠিত নোড করতে পারে শুধুমাত্র আছে দুটি সন্তান রেফারেন্স।

অন্যদিকে বাইনারি অনুসন্ধান ট্রি ( বিএসটি ), বাইনারি ট্রি ডেটা কাঠামোর একটি বিশেষ রূপ যেখানে প্রতিটি নোড একটি তুলনামূলক মান থাকে এবং বাম এবং বৃহত্তর মূল্যবান বাচ্চাদের ডানদিকে সংযুক্ত ছোট ছোট মূল্যবান শিশুরা থাকে।

সুতরাং, সব বিএসটি এর দ্বারা বাইনারি ট্রি তবে শুধুমাত্র কিছু বাইনারি ট্রি গুলি হতে পারে ' বিএসটিবিএসটি বাইনারি ট্রি একটি উপসেট হয় তা অবহিত করুন ।

সুতরাং, বাইনারি ট্রি চেয়ে একটি সাধারণ ডেটা-কাঠামোর বেশি বাইনারি অনুসন্ধান বৃক্ষ । এবং আপনাকে এটিও জানাতে হবে যে বাইনারি অনুসন্ধান ট্রি একটি বাছাই করা গাছ যেখানে জেনেরিক বাইনারি ট্রি সম্পর্কিত নিয়মের কোনও সেট নেই ।

বাইনারি ট্রি

একজন 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 এর চেয়ে বেশি।

বাইনারি ট্রি নোডের জন্য এ জাতীয় কোনও নিয়ম নেই । বাইনারি ট্রি নোডের একমাত্র নিয়মের দুটি বাচ্চা হওয়া তাই এটি নিজেকে ব্যাখ্যা করে যে বাইনারি কেন বলা হয় ।


আমরা কি সহজ বাইনারি ট্রি বাস্তবায়ন করতে পারি? কোন বাস্তবায়ন উপলব্ধ? আর এই গাছের ব্যবহার কী?
আসিফ মোশতাক

@ জ্ঞাত আপনি বাইনারি অনুসন্ধান ট্রিটি বাছাই এবং অনুসন্ধানের জন্য ব্যবহার করতে পারেন। আপনি বাইনারি অনুসন্ধান বৃক্ষের প্রয়োগটি
লেভেন্ট ডিভিলিওগ্লু

আমি সে সম্পর্কে জানি কিন্তু সরল গাছ বা সরল বাইনারি গাছের কোনও অস্তিত্ব আছে কি? বা সরল বাইনারি গাছের কোন প্রয়োগ?
আসিফ মোশতাক

এটি ব্যবহার করার কোনও মানে নেই তবে আপনি মূলটিতে এবং বাচ্চাদের মধ্যে স্বেচ্ছাসেবী নোড উদাহরণ যোগ করতে পারেন।
লেভেন্ট ডিভিলিওগ্লু

10

বাইনারি অনুসন্ধান ট্রি হ'ল এক বিশেষ ধরণের বাইনারি গাছ যা নীচের সম্পত্তিটি প্রদর্শন করে: যে কোনও নোডের জন্য এন এর বাম সাবট্রিতে প্রতিটি বংশধর নোডের মান এন এর মানের চেয়ে কম এবং ডান সাবট্রিতে প্রতিটি বংশজাত নোডের মান হয় n এর মানের চেয়ে বড়।


8

বাইনারি ট্রি

বাইনারি ট্রি এমন কিছু হতে পারে যার 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 এর বাইনারি অনুসন্ধান গাছ। পাতা আঁকা হয় না।

এখানে চিত্র বর্ণনা লিখুন

এবং পরিশেষে সুপরিচিত ডেটা স্ট্রাকচার এবং আলগোরিদিমগুলির পারফরম্যান্স তুলনা করার জন্য দুর্দান্ত স্কিমা প্রয়োগ করা হয়েছে:

এখানে চিত্র বর্ণনা লিখুন

চিত্রটি অ্যালগরিদম থেকে নেওয়া হয়েছে (চতুর্থ সংস্করণ)


4

বাইনারি ট্রি এমন একটি গাছ যার বাচ্চারা কখনই দুজনের বেশি হয় না। বাইনারি অনুসন্ধানের গাছটি আক্রমণকারীটিকে অনুসরণ করে যে বাম সন্তানের রুট নোডের কীটির চেয়ে কম মান হওয়া উচিত, এবং ডান সন্তানের রুট নোডের কী এর চেয়ে বড় মান হওয়া উচিত।


4
  • বাইনারি অনুসন্ধান ট্রি: যখন বাইনারি গাছে ইনর্ডার ট্র্যাভারসাল করা হয়, আপনি সন্নিবেশ করা আইটেমগুলির মান অনুসারে বাছাই করুন
  • বাইনারি ট্রি: কোনও ধরণের ট্র্যাভারসালগুলিতে কোনও সাজানো অর্ডার পাওয়া যায় না

কোনও সাজানো অর্ডার পাওয়া দরকার । একটি বাইনারি অনুসন্ধান গাছ একটি বাইনারি গাছও হয়। তারা পারস্পরিক একচেটিয়া নয়। বিএসটি বিটি-র একটি উপযুক্ত উপসেট।
লার্নের মারকুইস

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;
}

বাইরে অস্থায়ী পরিবর্তনশীল বজায় রাখুন


হয় subtree নাল হতে পারে। আপনার অ্যালগরিদম সেই কেসটি সঠিকভাবে পরিচালনা করে না।
লার্নের মারকুইস

1

বাইনারি অনুসন্ধান গাছে সমস্ত নোড একটি নির্দিষ্ট ক্রমে সাজানো হয় - একটি মূল নোডের বাম দিকের নোডের মূলের চেয়ে ছোট মান থাকে এবং নোডের ডানদিকে সমস্ত নোডের মানের চেয়ে বেশি মান থাকে রুট।


0

কোনও নোডের সর্বাধিক সংখ্যা দুটি হলে কেবল একটি গাছকে বাইনারি ট্রি বলা যেতে পারে as

কোনও গাছকে বাইনারি অনুসন্ধান গাছ হিসাবে ডাকা যেতে পারে এবং যদি কেবল কোনও নোডের শিশুদের সর্বাধিক সংখ্যা দুটি হয় এবং বাম শিশুটি ডান সন্তানের চেয়ে সর্বদা ছোট থাকে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.