Computer >> Máy Tính >  >> Lập trình >> Javascript

Làm thế nào để tìm một giá trị có trong cây nhị phân hay không trong JavaScript?

Chúng tôi được yêu cầu viết một hàm JavaScript trên đối tượng nguyên mẫu của kiểu dữ liệu BinarySearchTree nhận một giá trị và tìm xem giá trị đó có trong BST hay không.

Ví dụ

Mã cho điều này sẽ là -

// class for a single Node for BST
class Node {
   constructor(value) {
      this.value = value;
   }
}
// class for BST
// contains function to insert node and search for existing nodes
class BinarySearchTree {
   constructor() {
      this._root = null;
   };
   insert(value) {
      let node = this, side = '_root';
      while (node[side]) {
         node = node[side];
         if (value === node.value) {
            return;
         };
         side = value < node.value ? 'left' : 'right';
      };
      node[side] = new Node(value);
   };
   contains(value) {
      let current = this._root;
      while (current) {
         if (value === current.value) {
            return true;
         };
         current = value < current.value ? current.left : current.right;
      }
      return false;
   };
}
const tree = new BinarySearchTree();
for (let i = 0; i < 10; i++) {
   tree.insert(Math.floor(Math.random() * 1000));
};
tree.insert(34);
console.log(tree.contains(34));
console.log(tree.contains(334));

Đầu ra

Và đầu ra trong bảng điều khiển sẽ là -

true
false