//一般的查詢演算法
#include "stdafx.h"
#include
#include
using namespace std;
template
size_t search(vector& vec, const type &x)
int _tmain(int argc, _tchar* argv)
//2. 折半查詢演算法
template
size_t binarysearch(vector& vec, const type &x)}//
#include "stdafx.h"
template
//二叉排序樹 使用大量遞迴操作
class bsdnode
;bsdnode(const_type data):val(data),leftnode(null),rightnode(null),size(1),balancefactor(1){};
bsdnode(const_type data,pnode left,pnode right):val(data),leftnode(left),rightnode(right),size(1),balancefactor(1){};
~bsdnode(){};
};template
class binarysearchtree
;//~binarysearchtree();
bool insert(ref_const_type data, pnode& root) //進行插入操作 由於使用遞迴所以帶了第二個引數
else if(data < root->val) return insert(data,root->leftnode); //小於根結點的值 則插入左子樹
else if(data > root->val) return insert(data,root->rightnode); //大於根結點的值 則插入右子樹
return false;
}ref_const_type find(ref_const_type data,const bsdnode*root )const
return null;
}ref_const_type findmin(const bsdnode*root)const //查詢最小的結點 左邊節點(引數只要根節點就行)
ref_const_type findmax(const bsdnode*root)const //查詢最大的結點數值 左邊節點(引數只要根節點就行)
bool isempty() const
bool removemin(pnode &root)
bool removemax(pnode &root)
bool remove(ref_const_type data,pnode &root)
p = root;
root = (root->leftnode == null)? root->rightnode:root->leftnode;
delete p;
return true;
}//對於資料的列印 可以使用上次使用的中序排列方式進行資料的列印
//這個簡單的二叉排序樹還沒實現 平衡二叉樹(的確有點難度 呵呵)
//下次實現(主要就是insert函式的實現 方式不同)
};
查詢 二叉排序樹
順序查詢 順序查詢又叫線性查詢,是最基本的查詢技術,它的查詢過程是 從表中第乙個記錄開始,逐個進行記錄的關鍵字和給定值比較,若某個記錄的關鍵字和給定值相等,則查詢成功,找到所查的記錄 如果知道最後乙個記錄,其關鍵字和給定值比較都不等時,則表中沒有所查的記錄,查詢不成功。順序查詢演算法實現 如下 順序...
查詢 二叉排序樹
動態查詢表 表結構本身是在查詢過程中動態生成的,即對於給定值key,若表中存在其關鍵值等於key的記錄,則查詢成功返回,否則插入關鍵字等於key的記錄。二叉排序樹或者是一顆空樹,或者是具有下列性質的二叉樹 1 若他的左子樹不為空,則左子樹上所有結點的值均小於它的根結點的值。2 若它的右子樹不空,則右...
Codeup二叉查詢樹 二叉排序樹
輸入一系列整數,建立二叉排序數,並進行前序,中序,後序遍歷。輸入第一行包括乙個整數n 1 n 100 接下來的一行包括n個整數。可能有多組測試資料,對於每組資料,將題目所給資料建立乙個二叉排序樹,並對二叉排序樹進行前序 中序和後序遍歷。每種遍歷結果輸出一行。每行最後乙個資料之後有乙個空格。12 2 ...