hodně programátorů a moji čtenáři žádali, abych sdílet některé binární strom-založené kódování rozhovor otázky, stejně jako jsem to udělal pro pole, spojový seznam, řetězec, softwarový design, vzory, tabulky hash, a datové struktury obecně. Tento úkol byl ve skutečnosti čeká na nějakou dobu, a to bylo přilepená pro mě snaží najít řešení pro každou otázku, kterou jsem mohl sbírat. Tak, rozhodl jsem se zveřejnit seznam otázek binárního stromového rozhovoru nyní a případně zveřejnit řešení jako samostatný článek později. Je to jako vytváření rozhraní a poskytuje implementaci později, takže nemusíte blokovat další lidé, kteří jsou závislí na vaší rozhraní (ve skutečnosti, to je jedna z výhod pomocí rozhraní v jazyce Java nebo jakékoliv jiné programovací jazyk).
co je binární stromová datová struktura?
Každopádně, vrací se binární strom, bych chtěl znovu opakovat některé užitečné body, o stromové struktuře dat v obecné, které vám pomohou vyřešit tyto otázky na vlastní pěst:
1) strom je hierarchická datová struktura, na rozdíl od pole nebo spojový seznam, které jsou lineární. To znamená, že můžete ukládat hierarchické informace pomocí stromové datové struktury, jako je organizační struktura, rodokmen atd.
2) strom má uzly a děti. Horní nebo první uzel se nazývá kořen.
3) Pokud chcete vizualizovat, stromová datová struktura je jako obrácený strom v reálném světě. Když vidíte stromy kolem sebe, jejich kořeny jsou dole, ale když nakreslíte stromovou datovou strukturu v programování nebo informatice, jejich kořen je nahoře.
4) binární strom je speciální strom, kde můžete mít maximálně dvě děti. To znamená, že jeden uzel může buď žádné dítě, jedno dítě, nebo dvě děti. Nemohou mít tři nebo více dětí.
5) všechny uzly, které nemají žádné děti, jsou známé jako uzel listů.
6) Binární Vyhledávací Strom je speciální typ binárního stromu, kde hodnoty levé podstromy jsou menší než nebo se rovná kořene a hodnoty uzlů na pravé podstromy jsou stejné nebo větší než kořen. To poskytuje třídicí strukturu binárního vyhledávacího stromu, díky čemuž je vyhledávání opravdu rychlé.
můžete také zkontrolovat datové struktury a algoritmy: Deep Dive pomocí kurzu Java na Udemy, abyste se dozvěděli více o binárních vyhledávacích stromech. Je to jeden z nejlepších kurzů pro osvěžení vaší datové struktury a algoritmů.
7) binární vyhledávací strom je úzce spojena s binární vyhledávání, které funguje na principu snížení velikosti vstupu do půl po každé iteraci. Díky tomu je vyhledávání opravdu rychlé a můžete najít jakýkoli prvek v binárním vyhledávacím stromu v čase O (logN), ale pouze pokud je strom vyvážený.
8) existují dva způsoby, jak procházet stromovou datovou strukturu, hloubku první nebo úroveň první. Do hloubky-nejprve jdete dolů, dokud není k dispozici žádný další uzel, a pak se vrátíte k návštěvě uzlů na stejné úrovni.
zatímco v úrovni pořadí traversal, navštívíte všechny uzly na stejné úrovni před přechodem na další úroveň. K dispozici je také pre-order, post-order a in-order traversal pro binární, který se používá k procházení uzlů binárního stromu. Inorder traversal je speciální, protože navštěvuje všechny uzly v seřazeném pořadí.
9) vyvážený binární strom je jako mít stejný počet uzlů v každém podstromu, pokud máte všechny uzly pouze levého nebo pravého podstromu, než binární strom bude stát un-vyrovnaný a to bude působit jako spojový seznam, jak je znázorněno v diagramu níže:
10) nevyvážený nebo nevyvážený binární vyhledávací strom funguje jako propojený seznam, kde vyhledávání bude trvat O(n) čas na rozdíl od O(logN) času v vyváženém binárním vyhledávacím stromu.
to jsou některé z důležitých bodů, které by měl každý programátor vědět o struktuře binárních stromů. Pomůže vám vyřešit problémy se stromovým kódováním. Pokud se chcete dozvědět více o binární strom a jiné datové struktury, navrhuji, abyste připojit se k nějaké datové struktury a algoritmy kurzu jako Datových Struktur a Algoritmů: Hluboký Ponor Pomocí Java na Udemy oprášit své základy.
40+ Binární Strom Rozhovor Otázky pro Java Programátory
Bez plýtvání více času, zde je můj seznam, binární strom a binární vyhledávací strom (BST) na základě kódování problémů, z Programování Pracovní pohovory. Připojil jsem se k řešení všude tam, kde je to možné, ale pokud neexistuje žádný odkaz,můžete také najít řešení tím, že provedete vyhledávání Google. Jsou to velmi populární otázky a mnoho lidí je již vyřešilo.
chcete-li získat co nejvíce z tohoto seznamu, zkuste problém vyřešit, než se podíváte na řešení, teprve pak bude vaše mysl fungovat a budete čelit výzvám a upevnit své porozumění. Pokud se podíváte na řešení okamžitě, naučíte se pouze 10%, ale pokud se pokusíte, naučíte se 80 až 90% konceptů a triků za každou otázkou.
1) Jak najdete nejnižšího společného předka binárního stromu v Javě? (řešení)
2) Jak vytisknete levý pohled na binární strom v Javě? (řešení)
3) napsat program pro konstrukci stromu z Inorder a PreOrder traversal v Javě? (řešení)
4) Jak tisknete společné uzly ve dvou binárních vyhledávacích stromech v Javě? (řešení)
5) Proč binární halda je lepší volbou než BST pro implementaci prioritní fronty? (odpověď)
6) Jak zkontrolovat, zda je daný binární strom vyvážený nebo ne? Napište metodu Java, která přijímá binární strom a vrací true, pokud je vyvážená nebo nepravdivá jinak. (řešení)
7) Jaké jsou některé výhody binárního vyhledávacího stromu oproti datové struktuře hashtable? (odpověď)
8) jak zkontrolovat, zda daný binární strom je podstrom jiného binárního stromu? (řešení)
dali jste dva binární stromy a musíte vrátit true, pokud je první binární strom podstrom druhého. Podstrom binárního stromu BT je strom T sestávající z uzlu z BT a všech jeho potomků. Například v následujícím případě je T1 podstrom binárního stromu BT
9) Jak zjistíte vzdálenost mezi dvěma uzly v binárním stromu? (řešení)
10) Jak najít nejnižšího společného předka v binárním stromu v Javě? (řešení)
11) Napište program Java a zkontrolujte, zda jsou všechny listy daného binárního stromu na stejné úrovni? (řešení)
12) Jak převést daný binární strom na dvojitý propojený seznam v Javě? (řešení)
13) Napište program pro nalezení hloubky daného binárního stromu v Javě? (řešení)
14) jaký je rozdíl mezi binárními a binárními vyhledávacími stromy? (odpověď)
15) Co je to vyvážený strom? (odpověď)
16) Co je strom AVL? (odpověď)
17) napsat Java program pro tisk pre-order traversal binárního vyhledávacího stromu? Dát řešení pomocí iterace i rekurze? (řešení)
18) vytiskněte průchod BST po objednávce? Dát iterativní a rekurzivní algoritmus (řešení)
19) vytisknout inorder traversal BST v Javě? Dejte iterativní i rekurzivní algoritmy (řešení)
20) dali jste BST, kde jsou vyměněny dva uzly? Jak obnovíte původní BST? (řešení)
21) Jak převést binární strom na binární vyhledávací strom v Javě? (řešení)
22) Najděte největší podstrom BST daného binárního stromu v Javě? (řešení)
23) Napište program Java pro připojení uzlů na stejné úrovni jako binární strom? (řešení)
24) co je datová struktura Trie? (odpověď)
25) jaký je rozdíl mezi binárním stromem a Trie? (odpověď)
26) tisknout předky daného uzlu binárního stromu v Javě? (řešení)
27) Napište program Java pro tisk úrovně daného uzlu v binárním stromu? (řešení)
28) Tisk společných uzlů dvou daných BST v Javě? (řešení)
29) dát binární strom, vytisknout všechny root-to-leaf cestu v Javě? (řešení)
30) Tisk Inorder strom traversal bez rekurze v Javě? (řešení)
31) Tisk předobjednávky strom traversal bez rekurze a zásobníku v Javě? (řešení)
32) Tisk postorder strom traversal bez rekurze v Javě? (řešení)
33) Java Program pro kontrolu, zda daný binární strom je BST nebo ne? (řešení)
34) Napište program Java pro počítání uzlů listů v binárním stromu? (řešení)
35) Napište program Java, abyste našli výšku nebo hloubku binárního stromu? (řešení)
36) jak zjistíte, že dva dané binární stromy jsou stejné? (řešení)
napište metodu v Javě, která přijme dva binární stromy a vrátí true, pokud jsou stejné, jinak vrátí false.
37) jak odstraníte daný uzel z binárního vyhledávacího stromu v Javě? (řešení)
38) napište funkci Java pro přidání daného uzlu do binárního vyhledávacího stromu? (řešení)
39) vytisknout binární strom ve vertikálním pořadí v Javě? (řešení)
40) jaká je červeno-černá stromová datová struktura? (odpověď)
odpověď-červeno-černý strom je samovyvažující binární vyhledávací strom (BST), kde každý uzel má následující vlastnosti
a) každý uzel má barvu, buď červenou nebo černou.
b) kořen stromu je vždy černý.
c) neexistují dva sousední červené uzly (červený uzel nemůže mít červený rodič nebo červené dítě).
d) každá cesta od kořenového adresáře k nulovému uzlu má stejný počet černých uzlů.
můžete také zkontrolovat datové struktury v Javě: opakovací kurz rozhovoru o vzdělávání, abyste se dozvěděli více o datové struktuře červeného Černého stromu.
to je vše v tomto seznamu top 40 binární stromy a binární vyhledávací strom založené kódování problémů, z programování rozhovory. Přestože je řešení uvedeno v programovacím jazyce Java, můžete tyto otázky vyřešit v libovolném programovacím jazyce podle vašeho výběru, jako je Python, C, C++, JavaScript, Ruby nebo dokonce Swift. Své řešení můžete také zveřejnit v sekci komentáře, aby komunita mohla vaše řešení zkontrolovat a poskytnout užitečnou zpětnou vazbu.
vše nejlepší pro váš kódovací rozhovor.
Další Učení
11 Základní Kódování Rozhovor Otázky.
zvládnout kódování Rozhovor: datové struktury + algoritmy
Grokking kódování Rozhovor: Vzory pro kódovací otázky
Ostatní kódovací Interview Otázky l mohlo by se vám líbit
- jak implementovat algoritmus třídění vložení v Javě? (tutorial)
- jak aplikovat algoritmus Quicksort na místě v Javě? (tutorial)
- jak implementovat algoritmus třídění bublin v Javě? (tutorial)
- rozdíl mezi srovnávacím a srovnávacím algoritmem? (odpověď)
- jak použít Bucket Sort v Javě? (tutorial)
- jak implementovat Quicksort algoritmus bez rekurze? (tutorial)
- jak provést binární vyhledávací algoritmus v Javě? (tutorial)
- jak najít všechny páry v poli, jehož součet se rovná k (řešení)
- jak odstranit duplikáty z pole v Javě? (řešení)
- jak najít nejvýznamnější a nejmenší číslo v poli bez třídění? (řešení)
- jak najít duplikáty z netříděného pole v Javě? (řešení)
- jak najít jedno chybějící číslo v tříděném poli? (řešení)
- jak najít chybějící hodnotu z pole obsahujícího 1 až 100? (řešení)
- 50+ Datové Struktury a Algoritmy pro Problémy z Pohovorů (otázky)
- Moje oblíbené bezplatné kurzy se učit datovou Strukturu do hloubky (FreeCodeCamp)
- Jak odstranit prvek z pole v Javě? (řešení)
- jak zkontrolovat, zda pole obsahuje určitou hodnotu? (řešení)
- 10 Free Datové Struktury a Algoritmus, Kurzy pro Programátory (kurzy)
- 100+ Datová Struktura Kódování Problémy z Pohovorů (otázky)
Díky za přečtení tohoto článku. Pokud se vám tento článek líbí, sdílejte jej prosím se svými přáteli a kolegy. Máte-li jakékoli dotazy nebo zpětnou vazbu, napište prosím poznámku.
P. S. – pokud hledáte nějaké bezplatné kurzy algoritmů, které vám pomohou lépe porozumět struktuře dat a algoritmům, měli byste také zkontrolovat kurz snadno pokročilých datových struktur na Udemy. Je autorem softwarového inženýra a odborníka na algoritmy Google a je zcela zdarma.