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

জাভাস্ক্রিপ্ট বাইনারি সার্চ ট্রিতে মান অনুসন্ধান


আমরা একটি বিনিএসটির প্রপার্টি ব্যবহার করে সেটিতে উপাদান খুঁজব। আসুন প্রথমে সার্চের একটি ইটেরেটিভ বাস্তবায়ন দেখি:

উদাহরণ

searchIter(data) {
    let currNode = this.root;
    while (currNode !== null) {
        if (currNode.data === data) {
            // উপাদানটি পাওয়া গেল!
            return true;
        } else if (data < currNode.data) {
            // ডেটা প্যারেন্ট থেকে ছোট হলে বামে যান
            currNode = currNode.left;
        } else {
            // ডেটা প্যারেন্ট থেকে বড় হলে ডানে যান
            currNode = currNode.right;
        }
    }
    return false;
}

এই ফাংশনে, আমরা রুটকে currNode হিসেবে শুরু করি এবং আমাদের ডেটাকে currNode-এর ডেটার সাথে তুলনা করি। যদি মিল পাই তবে true ফেরত দিই, অন্যথায় ডেটার currNode-এর ডেটার সাথে সম্পর্ক অনুযায়ী বাম বা ডানে ইটারেট করি যতক্ষণ না আমরা একটি লীফ পেয়ে যাই বা আমাদের উপাদানটি পাই।

আপনি নিচের কোড দিয়ে এটি পরীক্ষা করতে পারেন:

উদাহরণ

let BST = new BinarySearchTree();
BST.insertIter(10);
BST.insertIter(15);
BST.insertIter(5);
BST.insertIter(50);
BST.insertIter(3);
BST.insertIter(7);
BST.insertIter(12);
console.log(BST.searchIter(2));
console.log(BST.searchIter(12));
console.log(BST.searchIter(50));
console.log(BST.searchIter(-22));
console.log(BST.searchIter(200));

আউটপুট

এটি নিচের আউটপুট দেবে:

false
true
true
false
false

ইনসার্ট ফাংশনের মতোই, সার্চটিও রিকারসিভভাবে বাস্তবায়ন করা যায়।

searchRec(data) {
    return searchRecHelper(data, this.root);
}

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

উদাহরণ

function searchRecHelper(data, root) {
    if (root === null) {
        // লীফে পৌঁছালাম কিন্তু পায়নি।
        return false;
    }
    if (data < root.data) {
        return searchRecHelper(data, root.left);
    } else if (data > root.data) {
        return searchRecHelper(data, root.right);
    }
    // এর মানে উপাদানটি পাওয়া গেল
    return true;
}

আপনি নিচের কোড দিয়ে এটি পরীক্ষা করতে পারেন:

উদাহরণ

let BST = new BinarySearchTree();
BST.insertRec(10);
BST.insertRec(15);
BST.insertRec(5);
BST.insertRec(50);
BST.insertRec(3);
BST.insertRec(7);
BST.insertRec(12);
console.log(BST.searchRec(2));
console.log(BST.searchRec(12));
console.log(BST.searchRec(50));
console.log(BST.searchRec(-22));
console.log(BST.searchRec(200));

আউটপুট

এটি নিচের আউটপুট দেবে:

false
true
true
false
false

  1. জাভাস্ক্রিপ্ট ট্রিতে প্রি-অর্ডার ট্রাভারসাল

  2. জাভাস্ক্রিপ্ট ট্রিতে ইন-অর্ডার ট্রাভারসাল

  3. জাভাস্ক্রিপ্টে স্ট্রিং সার্চ করার পদ্ধতি

  4. ডেটা স্ট্রাকচরে ব্যালেন্সড বাইনারি সার্চ ট্রি