Mohl by někdo prosím vysvětlit rozdíl mezi binárního stromu a binárního vyhledávacího stromu s příkladem ?
Rozdíl mezi binárního stromu a binární vyhledávací strom
Binární strom: Strom, kde má každý uzel až dva listy
1
/ \
2 3
Binární vyhledávací strom: Používá se k vyhledávání . Binární strom, kde je vlevo dítě obsahuje pouze uzly s hodnotami méně než nadřazeného uzlu, a pokud je právo dítě pouze obsahuje uzly, jejichž hodnoty větší než nebo rovnající se rodiče.
2
/ \
1 3
Binární strom je vyrobena z uzlů, kde každý uzel obsahuje „levý“ ukazatel, jako „správné“ ukazatel a datový prvek. „Root“ ukazatel nastaven na nejvyšší uzel ve stromě. Vlevo a vpravo ukazatele rekurzivně poukazují na menších „subtrees“ na obou stranách. Ukazatel null představuje binární strom s žádnými prvky - prázdné stromu. Formální rekurzivní definice je: binární strom je buď prázdná (zástupci ukazatel NULL), nebo je vyrobena z jednoho uzlu, kde levý a pravý ukazatele (rekurzivní definice dopředu) každý bod na binární strom.
Binární vyhledávací strom (BST), nebo „objednat binární strom“ je typ binárního stromu, kde jsou uzly uspořádány v pořadí: pro každý uzel, všechny prvky v levém podstromu jsou méně do uzlu (<), a všechny prvky, v pravém podstromu jsou větší, než je uzel (>).
5
/ \
3 6
/ \ \
1 4 9
Strom je uvedeno výše, je binární vyhledávací strom - „kořen“ uzel je 5, a levý podstromu uzly (1, 3, 4) jsou <5, a jeho pravá podstromu uzly (6, 9)> 5. rekurzivně, každý z podstromů musí také dodržovat binární vyhledávací strom omezení: v (1, 3, 4) podstromu 3 je kořen je 1 <3 a 4> 3.
Dejte si pozor na přesné znění v problémech - o „binární vyhledávací strom“ se liší od „binárního stromu“.
Binární vyhledávací strom je speciální druh binárního stromu, který vykazuje následující vlastnosti: pro každou uzlu n, hodnota každého potomka uzlu v levém podstromu n je menší než hodnota n, hodnota každého potomka uzlu v pravém podstromu je větší, než je hodnota n.
Jak všichni výše vysvětlil, o rozdílu mezi binárního stromu a binární vyhledávací strom, já jsem jen přidat, jak otestovat, zda je daná binární strom je binární vyhledávací strom.
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);
}
Doufám, že to pomůže. Omlouvám se, jestli já jsem odklonění od tématu, jak jsem cítil, že to stojí za zmínku to tady.
Binární strom je specializovaná forma stromu se dvěma dítětem (vlevo dítě a pravé dítě). Je to prostě reprezentace dat ve stromové struktuře
Binární vyhledávací strom (BST) je speciální typ binárního stromu, který následuje následující podmínky:
- levý uzel dítě je menší než její mateřské Node
- právo dítě uzel je větší než její mateřské Node
Binární strom je strom, jehož děti jsou nikdy víc než dva. Binární vyhledávací strom následuje invariant, že levá dítě by mělo mít menší hodnotu než klíče kořenového uzlu, zatímco pravá dítě by mělo mít větší hodnotu než klíče kořenového uzlu.
Binární vyhledávací strom: když nezbytného průchod je vyrobena z binárního stromu, dostanete setříděné hodnoty vložených kusů binárního stromu: no tříděného pořadí se vyskytuje v nějakém druhu průchod
Chcete-li zjistit povětrnostními či není daná binární strom je binární vyhledávací strom tady je alternativní přístup.
Procházet strom v nezbytného Fashion (tj Left Child -> Parent -> Right Child), Store překročil Node dat v dočasné proměnné řekněme temp , těsně před uložením do temp , Check povětrnostními údaje aktuální uzel je vyšší než předchozí, či nikoli , Pak už stačí jen zlomit to, Tree není Binární vyhledávací strom jiný procházet, dokud konec.
Níže je uveden příklad s 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;
}
Udržovat temp proměnné mimo
Binární strom stojí na datovou strukturu , která se skládá z uzlů , které lze jen mají dvě děti reference.
Binární vyhledávací strom ( BST ) na druhé straně, je zvláštní forma binární strom datové struktury, kde každý uzel má srovnatelnou hodnotu, a menší v hodnotě děti spojené s doleva a větší oceněné děti spojené s právem.
Tak, všichni BST ‚s jsou binární strom však pouze některé binární strom ‘ může být rovněž s BST . Oznámit, že BST je podmnožinou binární strom .
Takže Binary Tree je spíše obecný datové-struktury, než strom binárního vyhledávání . A také musíte uvědomit, že binární vyhledávací strom je tříděný strom, zatímco není tam žádná taková sada pravidel pro generické binární strom .
binární strom
Binary TreeKterý neníBST ;
5
/ \
/ \
9 2
/ \ / \
15 17 19 21
Binární vyhledávací strom (řazeny strom)
Binární vyhledávací strom , který je také binární strom ;
50
/ \
/ \
25 75
/ \ / \
20 30 70 80
Binary Search vlastnost Tree Node
Také oznámí, že z jakéhokoli nadřazeného uzlu v BST ;
Všechny levé uzly mají menší hodnotu, než je hodnota nadřazeného uzlu. V horním příkladu jsou uzly s hodnotami {20, 25, 30}, které jsou umístěny na levé straně ( vlevo potomci ) 50, jsou menší než 50 ° C.
Všechny správné uzly mají větší hodnotu, než je hodnota nadřazeného uzlu. V horním příkladu jsou uzly s hodnotami {70, 75, 80}, které jsou umístěny na pravé straně ( vpravo potomků ) 50, je větší než 50 ° C.
Neexistuje žádné takové pravidlo pro binární strom uzlu. Jediné pravidlo pro binární strom uzel má dva dětské takže to self-vysvětluje sama Proto nazývá binární .
binární strom
Binární strom může být cokoli , který má 2 děti a 1 rodič. To může být implementován jako spojový seznam nebo matice, nebo s vlastní API. Jakmile začnete přidat konkrétnější pravidla do ní, to stane se více specializovaný strom . Nejběžnější známé implementace je, že se přidá menší uzly na levé i ty větší na pravé.
Například značené binární strom velikosti 9 a výšky 3, s kořenový uzel, jehož hodnota je 2. Tree je nevyvážená a nejsou seřazeny . https://en.wikipedia.org/wiki/Binary_tree
Například, ve stromu na levé straně A má 6 dětí {B, C, D, E, F, G}. To může být převeden na binární strom na pravé straně.
Binary Search
Binární vyhledávání je technika / algoritmus, který se používá k nalezení konkrétní položky v uzlu řetězce. Binární vyhledávání pracuje na tříděné pole .
Binární vyhledávání porovnává cílovou hodnotu na středním prvku matice; v případě, že jsou nerovné je polovina, ve kterém cílový nemůže ležet je vyloučena a hledání pokračuje na zbývající polovinu, dokud není úspěšný, nebo zbývající polovina je prázdná. https://en.wikipedia.org/wiki/Binary_search_algorithm
Strom reprezentovat binární vyhledávání . Pole se zde prohledány [20, 30, 40, 50, 90, 100], a cílová hodnota je 40.
Binární vyhledávací strom
To je jedna z implementací binárního stromu. To se specializuje na vyhledávání .
Binární vyhledávací strom a B-stromové datové struktury jsou založeny na binární vyhledávání .
Binární vyhledávací stromy (BST), někdy nazývaný objednané nebo tříděné binárních stromů, jsou zvláštní druh obalu : datové struktury, které uchovávají „položky“ (jako jsou čísla, jména atd.) V paměti. https://en.wikipedia.org/wiki/Binary_search_tree
Binární vyhledávací strom velikosti 9 a hloubku 3, s 8 u kořene. Listy nejsou vypracovány.
A nakonec skvělé schéma pro porovnání výkonnosti známých datových struktur a algoritmů použit:
Snímek pořízený z algoritmů (4th Edition)
V binární vyhledávací strom, všechny uzly jsou uspořádány v určitém pořadí - uzly vlevo od kořene mají menší hodnotu, než je to kořen a všechny uzly vpravo uzlu mají hodnoty větší než hodnota z vykořenit.
Strom lze nazvat jako binární strom tehdy a jen tehdy, pokud je maximální počet dětí některý z uzlů jsou dva.
Strom lze nazvat jako binární vyhledávací strom tehdy a jen tehdy, pokud je maximální počet dětí některý z uzlů je dva a levá dítě je vždy menší než pravá dítěte.



















