查詢和二叉排序樹

2021-06-25 15:26:57 字數 1666 閱讀 5800

//一般的查詢演算法

#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 ...