Sobes.tech
Junior — Middle

Μπορείτε να εξηγήσετε τι είναι μια δομή δεδομένων δυαδικό δέντρο αναζήτησης και πώς λειτουργεί;

sobes.tech AI

Απάντηση από AI

Το δυαδικό δέντρο αναζήτησης (Binary Search Tree, BST) είναι μια δομή δεδομένων σε σχήμα δέντρου, όπου κάθε κόμβος περιέχει ένα κλειδί, και για κάθε κόμβο ισχύει η ακόλουθη συνθήκη:

  • Όλα τα κλειδιά στο αριστερό υποδέντρο είναι μικρότερα από το κλειδί του κόμβου.
  • Όλα τα κλειδιά στο δεξί υποδέντρο είναι μεγαλύτερα από το κλειδί του κόμβου.

Αυτό επιτρέπει την αποτελεσματική εκτέλεση λειτουργιών αναζήτησης, εισαγωγής και διαγραφής στοιχείων με μέση πολυπλοκότητα O(log n), εάν το δέντρο είναι ισορροπημένο.

Παράδειγμα εισαγωγής και αναζήτησης σε BST σε JavaScript:

class Node {
  constructor(key) {
    this.key = key;
    this.left = null;
    this.right = null;
  }
}

class BST {
  constructor() {
    this.root = null;
  }

  insert(key) {
    const newNode = new Node(key);
    if (!this.root) {
      this.root = newNode;
      return;
    }
    let current = this.root;
    while (true) {
      if (key < current.key) {
        if (!current.left) {
          current.left = newNode;
          break;
        }
        current = current.left;
      } else {
        if (!current.right) {
          current.right = newNode;
          break;
        }
        current = current.right;
      }
    }
  }

  search(key) {
    let current = this.root;
    while (current) {
      if (key === current.key) return true;
      current = key < current.key ? current.left : current.right;
    }
    return false;
  }
}

const tree = new BST();
tree.insert(10);
tree.insert(5);
tree.insert(15);
console.log(tree.search(5)); // true
console.log(tree.search(20)); // false