template
voidSortBTree
{
if(p == NULL) cout << "There isnot this node." < else if(p->lchild == NULL) p =p->rchild; else { BTreeNode //記錄左子樹(shù)中序遍歷的最后一個(gè)結(jié)點(diǎn)(值最大的點(diǎn)) while(temp->rchild != NULL) temp = temp->rchild; //刪除這個(gè)結(jié)點(diǎn),等價(jià)于用這個(gè)結(jié)點(diǎn)的做子樹(shù)代替這個(gè)結(jié)點(diǎn)(因?yàn)檫@個(gè)結(jié)點(diǎn)沒(méi)有右子樹(shù)) BTreeNode parent = temp; while(parent->rchild != NULL) { parent = temp; temp = temp->rchild; } parent = temp->lchild; p->set_data(temp->data); } } //deletea data template voidSortBTree { if(root == NULL) throw std::invalid_argument("Thisdata is not exsit."); else if(root->data == data)delete_node(root); else if(root->data > data)delete_data(root->lchild,data); else delete_data(root->rchild,data); } //find a specific data template BTreeNode { if(r == NULL) return r; else if(r->data == data) return r; //注意這兩行是不能合并在一起的,不然可能會(huì)出現(xiàn)NULL->data呢 else if(r->data > data) returnfind_data(r->lchild,data); else return find_data(r->rchild,data); } //find a specific data in tree template BTreeNode { if(find_data(root,data) == NULL) throw std::invalid_argument("Thisdata is not exist."); else return find_data(root,data); } //return the maximum value template constT& SortBTree { if(root == NULL) throw std::invalid_argument("Thisis an empty Tree."); else { BTreeNode while(q->rchild != NULL) q = q->rchild; return q->data; } } //returnthe minimum value template constT& SortBTree { if(root == NULL) throw std::invalid_argument("Thisis an empty Tree."); else { BTreeNode while(q->lchild != NULL) q = q->lchild; return q->data; } } //printthe sort tree template voidSortBTree { if(p != NULL) { display(p->lchild,visit); visit(p); display(p->rchild,visit); } } #endif
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |