Is it possible to do a binary search tree if the data does not possess natural ordering?
Non so cosa significhi la parola "naturale" nel tuo contesto; sembra vago.
Inoltre, immagini, video, file eseguibili e file audio mi sembrano perfettamente ordinabili. Ordinarli per confronto ordinale a byte, in caso di parità, il file più corto è più piccolo. Perché pensi che questo non sia un modo naturale per mettere qualcosa in ordine? Ecco come si mettono le stringhe in ordine, quindi perché non i file audio? Un file audio è solo una stringa di byte, quindi ordinalo come una stringa di byte.
Permettimi di rispondere a una domanda che so come rispondere invece:
Is it possible to do a binary search tree if the data does not possess a total ordering?
No. Gli alberi di ricerca binaria richiedono un ordinamento totale.
What is a total order?
Un ordine totale significa semplicemente che devi fornire a un operatore di confronto che può determinare l'uguaglianza, maggiore o minore rispetto a ogni coppia di elementi. Inoltre, tutte le regole che ritieni siano ovviamente valide per l'ordine devono essere soddisfatte, ad esempio:
- A è sempre uguale a A (riflessività)
- Se A = B allora B = A (simmetria di uguaglianza)
- Se A = B e B = C allora A = C (transitività)
- Se A < B & B < C poi A < C (transitivity)
- Se A < B poi B > A (antisimmetria della disuguaglianza)
- ...
e così via. Se non riesci a rispettare queste regole, non puoi fare una ricerca binaria e ottenere sempre risultati corretti. Se riesci a rispettare queste regole, puoi farlo
Or would it just be better to use a hashmap at that point?
Meglio per quale criterio? Non hai detto quali operazioni intendi eseguire su questa struttura dati diversa dalla ricerca . Le mappe hash sono molto utili in alcune attività a cui gli alberi binari sono malvagi e viceversa.