Risposte:
Albero binario: albero in cui ogni nodo ha fino a due foglie
1
/ \
2 3
Albero di ricerca binario: utilizzato per la ricerca . Un albero binario in cui il figlio di sinistra contiene solo nodi con valori inferiori al nodo padre e in cui il figlio di destra contiene solo nodi con valori maggiori o uguali al padre.
2
/ \
1 3
Binary Tree è una forma specializzata di albero con due figli (figlio sinistro e figlio destro). È semplicemente la rappresentazione di dati nella struttura ad albero
Binary Search Tree (BST) è un tipo speciale di albero binario che segue le seguenti condizioni:
Un albero binario è costituito da nodi, in cui ogni nodo contiene un puntatore "a sinistra", un puntatore "a destra" e un elemento dati. Il puntatore "radice" punta al nodo più in alto nella struttura. I puntatori sinistro e destro puntano ricorsivamente a "sottotitoli" più piccoli su entrambi i lati. Un puntatore null rappresenta un albero binario senza elementi: l'albero vuoto. La definizione formale ricorsiva è: un albero binario è vuoto (rappresentato da un puntatore nullo) oppure è costituito da un singolo nodo, in cui i puntatori sinistro e destro (definizione ricorsiva in avanti) puntano ciascuno su un albero binario.
Un albero di ricerca binario (BST) o "albero binario ordinato" è un tipo di albero binario in cui i nodi sono disposti in ordine: per ciascun nodo, tutti gli elementi nella sua sottostruttura sinistra sono inferiori al nodo (<) e tutti gli elementi nella sua sottostruttura destra sono maggiori del nodo (>).
5
/ \
3 6
/ \ \
1 4 9
L'albero mostrato sopra è un albero di ricerca binario - il nodo "root" è un 5 e i suoi nodi di sottostruttura a sinistra (1, 3, 4) sono <5 e i suoi nodi di sottostruttura a destra (6, 9) sono> 5. Ricorsivamente, ciascuno dei sottotitoli deve anche obbedire al vincolo dell'albero di ricerca binario: nella sottostruttura (1, 3, 4), 3 è la radice, 1 <3 e 4> 3.
Fai attenzione alla formulazione esatta dei problemi: un "albero di ricerca binario" è diverso da un "albero binario".
Come tutti sopra hanno spiegato sulla differenza tra albero binario e albero di ricerca binario, sto solo aggiungendo come testare se l'albero binario dato è albero di ricerca binario.
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);
}
Spero che ti possa aiutare. Scusatemi se mi sto allontanando dall'argomento perché ho sentito che vale la pena menzionarlo qui.
Albero binario sta per una struttura di dati composta da nodi che possono avere solo due riferimenti figlio .
L'albero di ricerca binario ( BST ), d'altra parte, è una forma speciale di struttura di dati dell'albero binario in cui ogni nodo ha un valore comparabile e figli con valori più piccoli associati a bambini con valori più grandi a sinistra e più grandi collegati a destra.
Pertanto, tutti i BST sono Albero binario, tuttavia solo alcuni Alberi binari possono essere anche BST . Notare che BST è un sottoinsieme dell'albero binario .
Pertanto, l' albero binario è più una struttura di dati generale che l' albero di ricerca binario . Inoltre, devi notificare che l' albero di ricerca binario è un albero ordinato mentre non esiste un insieme di regole per l' albero binario generico .
A Binary Tree
che non è un BST
;
5
/ \
/ \
9 2
/ \ / \
15 17 19 21
Un albero di ricerca binario che è anche un albero binario ;
50
/ \
/ \
25 75
/ \ / \
20 30 70 80
Notare anche che per qualsiasi nodo padre nel BST ;
Tutti i nodi di sinistra hanno un valore inferiore rispetto al valore del nodo padre. Nell'esempio superiore, i nodi con valori {20, 25, 30} che si trovano tutti a sinistra ( discendenti di sinistra ) di 50, sono più piccoli di 50.
Tutti i nodi giusti hanno un valore maggiore rispetto al valore del nodo padre. Nell'esempio superiore, i nodi con valori {70, 75, 80} che si trovano tutti a destra ( discendenti a destra ) di 50, sono maggiori di 50.
Non esiste una regola del genere per il nodo dell'albero binario . L'unica regola per Binary Tree Node è avere due bambini, quindi si spiega da sé perché si chiama binario .
Un albero di ricerca binario è un tipo speciale di albero binario che presenta la seguente proprietà: per ogni nodo n, il valore di ogni nodo discendente nella sottostruttura sinistra di n è inferiore al valore di n, e il valore di ogni nodo discendente nella sottostruttura destra è maggiore del valore di n.
Albero binario
L'albero binario può essere qualsiasi cosa che abbia 2 figli e 1 genitore. Può essere implementato come elenco o array collegato o con l'API personalizzata. Una volta che inizi ad aggiungere regole più specifiche, diventa un albero più specializzato . L'implementazione più comune nota è quella di aggiungere nodi più piccoli a sinistra e nodi più grandi a destra.
Ad esempio, un albero binario etichettato di dimensioni 9 e altezza 3, con un nodo radice il cui valore è 2. L'albero è sbilanciato e non ordinato . https://en.wikipedia.org/wiki/Binary_tree
Ad esempio, nella struttura a sinistra, A ha i 6 figli {B, C, D, E, F, G}. Può essere convertito nell'albero binario a destra.
Ricerca binaria
La ricerca binaria è una tecnica / algoritmo che viene utilizzato per trovare elementi specifici nella catena di nodi. La ricerca binaria funziona su array ordinati .
La ricerca binaria confronta il valore target con l' elemento centrale dell'array; se sono disuguali, la metà in cui il bersaglio non può mentire viene eliminata e la ricerca continua sulla metà rimanente fino a quando non ha successo o la metà rimanente è vuota. https://en.wikipedia.org/wiki/Binary_search_algorithm
Un albero che rappresenta la ricerca binaria . L'array cercato qui è [20, 30, 40, 50, 90, 100] e il valore target è 40.
Albero di ricerca binario
Questa è una delle implementazioni dell'albero binario. Questo è specializzato per la ricerca .
L'albero di ricerca binario e le strutture di dati B-tree si basano sulla ricerca binaria .
Gli alberi di ricerca binaria (BST), a volte chiamati alberi binari ordinati o ordinati, sono un particolare tipo di contenitore : strutture di dati che memorizzano "elementi" (come numeri, nomi ecc.) In memoria. https://en.wikipedia.org/wiki/Binary_search_tree
Un albero di ricerca binario di dimensioni 9 e profondità 3, con 8 alla radice. Le foglie non sono disegnate.
E infine un ottimo schema per il confronto delle prestazioni di strutture dati e algoritmi ben noti applicati:
Immagine tratta da Algorithms (4a edizione)
Un albero binario è un albero i cui figli non sono mai più di due. Un albero di ricerca binario segue l'invariante che il figlio di sinistra dovrebbe avere un valore più piccolo della chiave del nodo radice, mentre il figlio di destra dovrebbe avere un valore maggiore della chiave del nodo radice.
Per verificare se un determinato albero binario è un albero di ricerca binario, ecco un approccio alternativo.
Traverse Albero In Inorder moda (cioè Child Left -> Parent -> figlio destro), Negozio attraversato dei dati di nodo in una variabile temporanea consente di dire temperatura , poco prima della conservazione in temperatura , Controllare wheather Dati attuali nodo è superiore quindi quello precedente oppure no . Quindi basta scoppiarlo , Tree non è Binary Search Tree altrimenti attraversare fino alla fine.
Di seguito è riportato un esempio con Java:
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;
}
Mantiene la variabile temporanea all'esterno
In un albero di ricerca binario, tutti i nodi sono disposti in un ordine specifico: i nodi a sinistra di un nodo radice hanno un valore più piccolo della sua radice e tutti i nodi a destra di un nodo hanno valori maggiori del valore del radice.
Un albero può essere chiamato come albero binario se e solo se il numero massimo di figli di uno dei nodi è due.
Un albero può essere chiamato come albero di ricerca binario se e solo se il numero massimo di figli di uno dei nodi è due e il figlio sinistro è sempre più piccolo del figlio destro.