質問
わかりました、だから私はバイナリ検索ツリーのレベル注文トラバーサルを実行しようとしていますが、それが機能していません。以下のコードは私には理にかなっていますが、それはおそらく私が永遠にそれを見てきたので、それがうまくいくべきだと確信したからです。
void BST<T>::levelByLevel(ostream &out) {
Queue<BinNodePointer> q;
BinNodePointer subtreeRoot;
if(myRoot == NULL)
return;
q.enqueue(myRoot);
while(!q.empty()) {
subtreeRoot = q.front();
out << subtreeRoot->data << " ";
q.dequeue();
if(subtreeRoot->left != NULL)
q.enqueue(subtreeRoot->left);
if(subtreeRoot->right != NULL)
q.enqueue(subtreeRoot->right);
}
}
たぶん皆さんは、私が間違っていることを指摘できるかもしれません。なぜなら、私はバイナリ検索ツリーの概念を理解しているが、私はすべてのインとアウトに100%ではないからです。
解決
結果に何も問題はありません。
24,12,18に到着するにはどうすればよいですか?
ルートレベルで最初に12を挿入し、次にルート12の右ノードとして挿入し、24の左ノードとして挿入します。 24歳未満なので、24の右ノードとして挿入されます
それで:
12
12
\
24
12
\
24
/
18
そのため、アルゴリズムが挿入されているため、レベル1(12)、レベル2(24)、レベル3(18)のレベル12,24,18の3つのレベルがあります。
所属していません StackOverflow