0

我在二进制堆中打印根的左子树时遇到问题。我想递归地做,但我认为我做的不正确。有人可以指出我正确的方向吗?

template <class Comparable>
    void BinaryHeap<Comparable> :: printLtSubtree(int i)
    {

            // INSERT CODE for printLtSubtree HERE
            if (i > currentSize)
                    System.exit();
            if (i <= currentSize)
                    cout << array[i];
                    printLtSubtree(i->left);
                    printLtSubtree(i->right);

    }

如果索引小于 currentSize,我只想打印出元素。

这可能会有所帮助:

template <class Comparable>
    class BinaryHeap
    {
      public:
        explicit BinaryHeap( int capacity = 100 );

        bool isEmpty( ) const;
        bool isFull( ) const;
        const Comparable & findMin( );

        // const Comparable & findMax( );

    // int Height () const; 
    void printLtSubtree();
        void insert( const Comparable & x );
        void deleteMin( );
        void deleteMin( Comparable & minItem );
        void makeEmpty( );

      private:
        int                currentSize;  // Number of elements in heap
        vector<Comparable> array;        // The heap array

        void buildHeap( );
        void percolateDown( int hole );
        void printLtSubtree (int i);
    };

    #include "BinaryHeap.cpp"

主功能:

void FillHeap (BinaryHeap<char>& B);

int main()
{
BinaryHeap<char> PQ(50);

FillHeap (PQ);

PQ.deleteMin();

PQ.printLtSubtree();

return 0;
}

void FillHeap (BinaryHeap<char>& B)
{
B.insert('A');
    B.insert('B');
    B.insert('C');
    B.insert('D');
    B.insert('E');
    B.insert('F');
    B.insert('G');
    B.insert('H');
    B.insert('I');
    B.insert('J');
}
4

0 回答 0