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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

二叉查找树的简单实现

發布時間:2025/3/21 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 二叉查找树的简单实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

二叉查找樹是 ? 左子節點 <= 根節點 <= 右子節點 的樹形結構,其平均時間復雜度:O(log2n)(簡單地說搜索方式跟二分法差不多)。

二叉排序樹是一種動態樹表。其特點是:樹的結構通常不是一次生成的,而是在查找過程中,當樹中不存在關鍵字等于給定值的節點時再進行插入。

新插入的結點一定是一個新添加的葉子節點,并且是查找不成功時查找路徑上訪問的最后一個結點的左孩子或右孩子結點。

先定義二叉樹和樹節點:

typedef struct BST_node{int data;struct BST_node* left;struct BST_node* right; }BST_Node; typedef struct BST{BST_Node* root;size_t size; };

再給出創建節點和刪除的函數:

//定義一個函數用來用傳入的數據創建節點 BST_Node* creat(int data){BST_Node* node= (BST_Node*)malloc(sizeof(BST_Node));node->data = data;node->left = NULL;node->right = NULL;return node; }

//定義一個函數用來刪除某個節點
void destroy(BST_Node* node){
free(node);
}

然后實現二叉查找樹的主要部分在于插入、刪除操作該如何實現。

首先來看插入:

要插入一個數據,同時保持樹的特性不改變。這里根據要插入的數據與根節點數據的大小關系來選擇插入左子樹還是右子樹,當根節點為空節點時就放到根節點中;

//該函數用來向以root為根的子樹中插入node節點 void insert(BST_Node* node, BST_Node** root){//這里用二級指針的目的在于直接修改root為根的子樹,函數體中對源節點的修改要用一級指針的形式(二級解引用)if(!*root)*root = node;else if( node->data < (*root)->data)insert(node, &(*root)->left);//要插入左子樹時可以看成向左子節點為根的二叉樹中插入node,于是遞歸調用,這個遞歸終止條件就是*root為空,也就是說當找到某一路徑的最底層子節點的子節點時插入;
//查找樹的特性通過if()中的判斷選擇來維持;
elseinsert( node, &(*root)->right); } //插入函數 void bst_insert(BST* bstree, int data){insert( creat(data), &bstree->root);++size; }

插入ok,再來刪除:

//先定義一個函數用來返回在以root為根節點的子樹中,查找到數據data的節點,然后如下圖所示: // 1 // / \ // 0 3 ->例如,要刪除3,找到3的節點,然后將節點3的左子樹挪到3的右子樹的最左下 // / \ (也就是把2插入到3的右子樹,當然結果肯定是在右子樹的最左下) // 2 4 (刪除的調整方法有兩種) // / \ / \ BST_Node* tofind(int data, BST_Node** root){if((*root)->data == data || !*root)return root;if(data < (*root)->data)tofind(data, &(*root)->left);if(data > (*root)->data)tofind(data, &(*root)->right); }bool delete(int data,BST* bstree){BST_Node** node = tofind(data, &(bstree->root));if(*node){insert((*node)->left, (*node)->right);BST_Node* node_tmp = *node;*node = (*node)->right;destroy(node_tmp);--size;return true;}elsereturn false; }

刪除ok,其他的功能可以在插入、刪除的功能上擴展出來,不重復了。

?

轉載于:https://www.cnblogs.com/young8848/p/4382592.html

總結

以上是生活随笔為你收集整理的二叉查找树的简单实现的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 亚洲熟妇一区 | 一级做a爰片毛片 | 秋霞欧美一区二区三区视频免费 | 九九精品在线观看视频 | 天天躁夜夜操 | 欧美日批视频 | 久久久视 | 亚洲黄色av网站 | 国产激情在线视频 | 被扒开腿一边憋尿一边惩罚 | 日韩av网页 | 日韩精品中文字幕在线播放 | 少妇做爰免费理伦电影 | 蜜桃臀aⅴ精品一区二区三区 | 成人福利网 | 中出在线播放 | 中文字幕亚洲一区 | 白白色免费视频 | 中文字幕亚洲在线观看 | 黑人操少妇 | 久久久精品毛片 | 色乱码一区二区三在线看 | 91久久国产综合久久91 | 韩国国产在线 | 91久久极品少妇xxxxⅹ软件 | 国产精九九网站漫画 | 色热热 | 欧美在线网址 | 熟女毛片 | 成年人在线观看av | 国产特黄 | 色综合网站| 日本一二三不卡视频 | 亚洲专区第一页 | 色综合狠狠 | 理论片一区 | 天堂av8| 久久国产亚洲 | 日韩黄色精品 | 瑟瑟视频在线 | 午夜一区二区三区在线观看 | 国产精品-区区久久久狼 | 欧美三级影院 | 青青草国产 | 免费av日韩 | 成年人黄色大片 | 国产wwww| 中文字幕在线观看线人 | yy4138理论片动漫理论片 | 综合性色 | 国产中年熟女高潮大集合 | 国产99999 | 91偷拍富婆spa盗摄在线 | 黄色激情四射 | 老色驴综合网 | 久久性生活视频 | 亚洲精品中文字幕 | 少妇人妻偷人精品无码视频新浪 | 成人精品二区 | 日韩福利视频 | 男插女视频网站 | 亚洲一区二区三区四区在线观看 | 欧美激情久久久久 | 91亚洲网站 | 无码人妻丰满熟妇区五十路 | 毛片网络 | 超碰在线进入 | 日韩片在线观看 | 亚州av网站| 素人一区 | 日韩av三级在线观看 | 久久久久人妻一道无码AV | 久久精品国产亚洲AV无码男同 | 午夜免费观看 | 欧美成人乱码一区二区三区 | 伊人365| 新天堂网| 国产精品自产拍高潮在线观看 | 久草视频手机在线观看 | 在线观看涩涩视频 | 鲁一鲁在线视频 | 美女极度色诱图片www视频 | 毛片一区二区 | 7色av| 91欧美激情一区二区三区成人 | 亚洲毛片在线观看 | 国模无码视频一区 | 午夜激情电影在线观看 | 亚洲精品免费电影 | 色成人综合 | 日韩欧美电影一区二区三区 | 91天天| 69**夜色精品国产69乱 | 人人爽人人插 | 中文字幕在线观看一区 | 久久久久亚洲无码 | 伦理片久久 | 欧美丰满熟妇bbbbbb | 免费看aaaaa级少淫片 |