insert関数とswapSubTreesおよびprintTree関数をテストした後、ようやくすべての関数が機能するようになりました。次に、ファイルからバイナリツリーを作成する必要があります。ファイルを開いてファイルの最初の整数を読み取ると、プログラムがクラッシュします。
たくさんのコードがあり、私はコードの壁を作りたくありません。重要な部分を投稿し、必要に応じて残りのコードを提供します。
交換して印刷する私の機能は次のとおりです。
template<class elemType>
void bSearchTreeType<elemType>::printTree()
{
printTree(root);
}
template<class elemType>
void bSearchTreeType<elemType>::printTree(nodeType<elemType> *p)
{
if(p != NULL)
cout << p->info << endl;
printTree(p->lLink);
printTree(p->rLink);
}
template<class elemType>
void bSearchTreeType<elemType>::swapSubtrees(nodeType<elemType> * p)
{
if (p != NULL)
{
if (p->lLink != NULL && p->rLink != NULL)
{
nodeType<elemType> * temp = p->lLink;
p->lLink = p->rLink;
p->rLink = temp;
delete temp;
}
if (p->lLink != NULL && p->rLink == NULL)
{
swapSubtrees(p->lLink);
}
if (p->rLink != NULL && p->lLink == NULL)
{
swapSubtrees(p->rLink);
}
}
}
私の主なプログラムは:
#include<iostream>
#include<fstream>
#include<cstdlib>
#include "binarySearchTree.h"
using namespace std;
int main()
{
bSearchTreeType<int>bt;
ifstream infile;
infile.open("binaryTree.txt");
if(!infile){
cout<<"File not found"<<endl;
}
int tree;
while(infile>> tree)
{
bt.insert(tree);
}
bt.swapSubtrees();
bt.printTree();
bt.swapSubtrees();
system("PAUSE");
return 0;
}
プログラムは完全にコンパイルおよび実行され、12から始まるリストの印刷を開始します。
これはbinaryTree.txtの内容です:12 23 56 45 78 89 98 25 36 65 54
なぜクラッシュし続けるのか、少し混乱しています。何かご意見は?リストを手動で作成したとき、プログラムは安定していませんでした。最後のアイテムが印刷された後、プログラムはハングします。印刷しようとするとハングするようになりました。機能に問題があると思います。
とても有難い