プログラムにヒープを実装しようとしています。ヒープは二分木と同じように思えます。これは、最小ヒープや最大ヒープなどのすべてのヒープに当てはまりますか? 実行されているのは、最大/最小ノードを先頭に配置するツリーのトラバーサルだけなので?
また、1 次元配列の使用は、完全なバイナリ ツリーがある場合にのみ有益であると読みました。完全なバイナリ ツリーがない場合は、別のクラスのフレンド クラスを使用する方が有益でしょうか? 何故ですか?そのような:
template<class T> class BT; // forward declartion -> added at edit
template<class T>
class BTNode{
friend class BT<T>; // not sure why we need two classes
private:
T data;
BTNode<T> *leftChild; // what is the benefit of making a object Node?
BTNode<T> *rightChild;
};
template<class T>
class BT{
private:
BTNode<T> *root; // what is the benefit of having this root in another class?
};
前もって感謝します。