Drzewo AVL - błędy w programie

0

Witajcie Szanowni Programiści.
Zaczynam pracę na c# i mam do oddania na zaliczenie program, który ma opisywac wszystkie operacje na drzewie AVL. Dosyc opornie idzie mi pochłanianie nowej wiedzy. Wzorowałem się na programie kolegi napisanym w C++, ale konwersja nie jest taka prosta. Największy problem mam ze skończeniem procedur inorder i postorder oraz z usuwaniem elementów z programu.
Żeby tutaj nie zaśmieca za bardzo podaję link do pełnego kodu:
http://wklej.org/id/1264138/

Najtrudniejsze dla mnie problemy:


        public void inorder(AVLNode x)
        {
            if (x != null)
            {
                 GlobalMembersAvl.inorder(x.left); //////////
                Console.Write(x.key);
                Console.Write("\n");
                   GlobalMembersAvl.inorder(x.right); ////////
            }
        }
        public void postorder(AVLNode x)
        {
            if (x != null)
            {
                 GlobalMembersAvl.postorder(x.left); //----------------
                 GlobalMembersAvl.postorder(x.right);//---------
                Console.Write(x.key);
                Console.Write("\n");
            }
        }

        public void Dispose()
        {
            while (root != null)
            {
                Remove(Remove(root));//////////////////
            }
        }

Jeśli wybrałem zły dział proszę przenieś do "Newbie"
Z góry dzięki za uwagę!

EDIT: Niewiele do sukcesu brakuje. Mam jeszcze problem z określeniem odpowiednim destruktora:
http://wklej.org/id/1264569/

1

Przepisywanie 1:1 z C++ do C# to nienajlepszy pomysł (ale wiem, nie chcesz pisać samemu, a musisz oszukać jakąś wyszukiwarkę plagiatów, spoj?). W C# nie zarządzasz sam pamięcią, więc w ogóle wywal metodę Dispose (na marginesie, to nie jest destruktor). Takimi rzeczami zajmuje się garbage collector - jeśli z Twojego drzewa nic nie korzysta (nie ma do niego nigdzie referencji), zostanie automatycznie sprzątnięte z pamięci. Niekoniecznie natychmiast, ale nie ma to znaczenia.
Metoda Dispose (czyli implementacja interfejsu IDisposable) jest potrzebna, jeśli musisz uporządkować jakieś zewnętrzne, niezarządzane zasoby, np. zamknąć połączenie z bazą, zamknąć plik itd.

1 użytkowników online, w tym zalogowanych: 0, gości: 1