最初のパラメータは親ノードへのポインタであるようです。 (パラメータの名前はparent
ですが、またなぜならそれはlinked implementationに使われている方法のためだけでなく、例えば、this
にこのパラメータを設定する方法addChild
を参照してください。)
したがって、ツリーのルートを構築することはnullptr
にする必要があります親の場所。
ところで、リンクされた実装は方法getChild
とaddChild
を提供する:ツリーを生成
TreeNode<int>* leftChild = new TreeNode<int>(root, 17);
TreeNode<int>* rightChild = new TreeNode<int>(root, 37);
TreeNode<int>* rightGrandChild = new TreeNode<int>(rightChild, 64);
:
TreeNode<int>* root = new TreeNode<int>(nullptr, 42);
その後は、他のノードは、既存のノードの子として追加することができます既存のノードに子ノードを追加/追加するために使用します。これら二つを使用して、以下のように、上記ツリーを構築することができます。
TreeNode<int>* root = new TreeNode<int>(nullptr, 42);
root->addChild(17);
root->addChild(37);
root->getChild(1)->addChild(64); // add to root's child[1]
私見、それはへのポインタを取る基本となる実装(すなわち、クラスのコンストラクタを公開することなく、ルートのツリーを構築する方法を欠けているように見えます親ノード)。私コンストラクタはプライベート作ると静的メソッドの追加をお勧めしたい:
これを使用して
template <class T>
static TreeNode<T>* TreeNode<T>::makeRoot (const T& data) {
return new TreeNode<T>(nullptr, data);
}
を、上記のツリーはADTとしてのTreeNodeを使用して構築することができます
TreeNode<int>* root = TreeNode<int>::makeRoot(42);
root->addChild(17);
root->addChild(37);
root->getChild(1)->addChild(64); // add to root's child[1]
最初のパラメータは、ポインタのようです親ノードに送信する。私は木の根に 'nullptr'を与えなければならないと思います。 – nickie
@nickie私はそれに旋風を与え、それは働いた。私はちょうど私の恥の散歩をしましょう... – user0000001
Hehe、乾杯... :-) – nickie