Alright guys, I został poproszony to pytanie w wywiadzie dzisiaj i to idzie tak:Czy drzewo binarne zawiera inne drzewo?
„Powiedz jeśli jedno drzewo binarne jest zawarty wewnątrz innego drzewa binarnego lub nie (zawiera implikuje zarówno pod względem struktury i wartości węzłów)”
Myślałem o następującym podejściu:
zrównywanie większy drzewa jak:
{{{-}a{-}}b{{-}c{-}}}d{{{-}e{{-}f{-}}}g{{{-}h{-}}i{{-}j{-}}}}
(I rzeczywiście napisać kod dla tego, {-}
implikuje pusty LEF T lub tuż pod-drzewo, każdy pod drzewa jest zamknięta w nawiasach) {}
Teraz mniejszy podzbiór drzewa trzeba dopasować ten wzór:
{{.*}e{.*}}g{{{.*}h{.*}}i{{.*}j{.*}}}
gdzie {.*}
oznacza pustym lub nie puste pod-drzewo.
W momencie, w którym myślałem, będzie to prosty problem z dopasowaniem wzorca w języku java, ale zostałem oszukany. Właściwie teraz czuję, właśnie zmieniłem problem (stworzyłem jednego potwora z drugiego).
Czy istnieje prosty prosty szablon dopasowany do tych wzorów? Rozumiem, że mogą istnieć inne podejścia do rozwiązania tego problemu, a to może nie być najlepsze. Zastanawiam się tylko, czy to jest możliwe do rozwiązania.
Czy "w strukturze" oznacza "ten sam obiekt" lub ".equals() [z odpowiednią implementacją]? Np. Jeśli drzewo jeden jest liściem o wartości" 4 ", a drzewo dwa ma również liść o wartości" 4 "(ale który jest obiektem innym niż drzewo), czy drzewo dwa zawiera drzewo jeden? –
Nie widzę wymogu w pytaniu początkowo o używanie wyrażeń regularnych. Czy ta część pytania do wywiadu była odpowiednia? naprawdę wydaje się być niewłaściwym narzędziem całkowicie dla tej pracy –
Wraz z @DarkFalcon podejrzewam, że algorytm, który * musi * przemierzyć całe drzewa, może nie być tym, na co liczyli ankieterzy. Przecież po spojrzeniu na kilka pierwszych węzły dwóch drzew, możesz określić, które poddrzewa prawdopodobnie pokrywają się, a które nie, nawet jeśli chcesz używać prezentacji ciągów drzew, o ile twoje ograniczniki są zrównoważone, nie można Robisz to po prostu sprawdzając, czy łańcuch ewentualnie zawartego drzewa jest podciągiem drzewa, które może zawierać? –