日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

数据结构-树5-二叉搜索树

發布時間:2025/3/15 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据结构-树5-二叉搜索树 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

#include<iostream> #include<string>using namespace std; //構建二叉樹的結構體 template< typename T> struct binaryTreeNode {T element; //數據binaryTreeNode<T>* leftChild; //左子樹指針binaryTreeNode<T>* rightChild; //右子樹指針//C C++ 區別//無參數構造函數-->用來給數據初始化binaryTreeNode(){leftChild = rightChild = NULL;}//傳入數據域//C++初始化參數列表(const數據域必須采用這種方式)binaryTreeNode(const T& element) :element(element){leftChild = rightChild = NULL;}//C++類中const成員: const數據成員 const成員函數binaryTreeNode(const T& element, binaryTreeNode<T> * leftChild, binaryTreeNode<T>* rightChild) :element(element){//c++ thisthis->leftChild = leftChild;this->rightChild = rightChild;}};template< typename K, typename E> class binarySearchTree { public:binarySearchTree();//萬金油函數:判斷是否為空+size大小+打印數據int size() const; //const 成員函數里面不能修改基本數據成員bool empty() const;void printNode(binaryTreeNode<pair<const K, E>>* Node);void visit(binaryTreeNode<pair<const K, E>>* Node){cout << Node->element.first << ":" << Node->element.second << endl;}void printTree();//插入結點:插入的pair類型的結構體數據void insert(const pair<const K, E> &thePair);//刪除結點:根據關鍵字刪除//void erase(const K& theKey);//查找結點//pair<const &K, E>* find(const K& theKey); protected: //pair<const K,E> 模板結構體名binaryTreeNode<pair<const K, E>>* root;//根結點表示整個數int treeSize; //記錄結點數 };template< typename K, typename E> int binarySearchTree<K,E>::size() const {return treeSize; }template< typename K, typename E> bool binarySearchTree <K,E>::empty() const {return treeSize == 0; }template< typename K, typename E> binarySearchTree <K, E>::binarySearchTree() {root = NULL;treeSize = 0; }template<typename K, typename E> void binarySearchTree<K, E>::printNode(binaryTreeNode<pair<const K, E>>* Node) {if (Node != NULL){printNode(Node->leftChild);visit(Node);printNode(Node->rightChild);} } template<typename K, typename E> void binarySearchTree<K, E>::printTree() {printNode(root); }template<typename K,typename E> void binarySearchTree <K, E>::insert(const pair<const K, E> & thePair) {//找到合適的位置插入binaryTreeNode<pair<const K, E>> *p = root;binaryTreeNode<pair<const K, E>> *pp = NULL;while (p != NULL){pp = p; //記錄父結點if (thePair.first < p->element.first){p = p->leftChild;}else if (thePair.first > p->element.first){p = p->rightChild;}else { //表示鍵存在p->element.second = thePair.second;return;}}binaryTreeNode<pair<const K, E>>* newNode = new binaryTreeNode<pair<const K, E>>(thePair);if (root != NULL){if (thePair.first < pp->element.first){pp->leftChild = newNode;}else pp->rightChild = newNode;}else{root = newNode;}treeSize++; }int main() {binarySearchTree<int, string> myBST;myBST.insert(pair<int, string>(8, "美麗世界"));myBST.insert(pair<int, string>(9, "343434"));myBST.insert(pair<int, string>(5, "Joken"));myBST.insert(pair<int, string>(1, "VICO"));myBST.insert(pair<int, string>(6, "widget"));myBST.insert(pair<int, string>(2, "nana"));myBST.printTree();system("pause");return 0; }

運行結果:

?

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的数据结构-树5-二叉搜索树的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。