BTree btree; |
btree.insert(5,'B'); btree.insert(2,'A'); btree.insert(1,'D'); btree.insert(4,'F'); btree.insert(8,'A'); btree.insert(9,'C'); |
for(btree.setItrBegin() ; !btree.ItrEqual(0) ; ++btree){
// イテレータを、begin() から end() まで移動させるための記法
btree.Itr()->PrintLocal();
// イテレータが指す Node に対し PrintLocal() 関数を呼び出す
}
[実行結果]
1 D
2 A
5 B
|
// key=5 に対応する data の探索 cout << "key=5, data=" << btree.find(5) << "\n"; [実行結果] key=5, data=B |
while(btree.nodeNum()>0){
cout << btree.getTop() << "\n";
btree.deleteTop();
}
[実行結果]
D
A
B
|
----data access with the iterator 1 D 2 A 5 B ----data access with the key key=5, data=B ----used as a Priority Queue D A B |
bool BNode::insert(int k, char d){
if(k<key){ // k < key なら
bool result; // 挿入されたかどうかの結果を格納する変数
if(leftNode != 0){ // 左の枝に BNode が存在すれば
result = leftNode->insert(k,d);
}else{ // 左の枝に BNode が存在しなければ
leftNode = new BNode(k,d); //新たな BNode を追加
leftNode->parentNode = this; //自分が新たな BNode の上位に
result = true; // 挿入されたので true
}
return result; // 挿入されたかどうかを return
}else{ // k >= key なら
…
|
char BNode::find(int k){ // key=k なる Node を探し, data を返す関数
if(this==0){ // この Node が存在しない (ヌルポインタである) ならば
return(0);
}else{
if(key==k){ // この Node が求める Node なら
return(data);
}else if(k < key){ // この Node より左の Node が求める Node なら
return(leftNode->find(k));
}else{
…
|