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{ … |