Ve skutečnosti to, co chci vědět, je to, jak implementovat algoritmus traversal na zakázku pro BST, ale aby jej pouze pomocí vložení, vymazání a křížovou kontrolu algoritmy pre-order na BST.
Můžete předpokládat, že jste vzhledem k implementaci pro standardní BST algoritmů pro vložení, vymazání a pre-objednávat traversal.
jak implementovat BST nezbytného průchod?
Hmmm ... Řekněme, že máme + u kořene a 1 v levé uzlu a 2 v pravém uzlu. Pre-order bude + 1 2a aby se 1 + 2.. Rozdíl je, že první a druhý byly zaměněny, takže pokud máte vkládání a mazání můžete rekurzivně vyměnit jednotlivé hodnoty kořen s jejím levém hodnotou uzlu a pak pomocí předobjednávku procházet strom, který se vrátí způsobí nezbytného traversal.
Nejsem si jistý, jestli je to způsob, jak jít, ale doufám, že to pomůže.
Myslím, že jsem našel řešení. :)
máme předem objednávat traversal, vkládání a mazání metody.
Předpokládejme, že jsme vzhledem k BST.
co děláme, je, zajišťujeme traversal metoda pre-order s daným BST. od pre-order traversal vždy jít do nadřazeného uzlu Nejprve jsme odstranit a vložit každý kořen (protože kořen je první mateřský podnik se setkáme) uzel rekurzivně, dokud levý dílčí strom kořene je null.
Nyní začnete odstraněním kořen, dokud tam žádné uzly left.Put těch odstraněných uzlin v poli nebo kamkoli budete chtít. Získáte seřazený množinu uzlů. (Tj uzly budou odstraněny v tříděném order.the nejmenší první a tak dále ...)













