質問

わかりました、だから私はバイナリ検索ツリーのレベル注文トラバーサルを実行しようとしていますが、それが機能していません。以下のコードは私には理にかなっていますが、それはおそらく私が永遠にそれを見てきたので、それがうまくいくべきだと確信したからです。

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つのレベルがあります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top