【数据结构-树】3.详解二叉排序树(理论+代码)
生活随笔
收集整理的這篇文章主要介紹了
【数据结构-树】3.详解二叉排序树(理论+代码)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
二叉排序樹
二叉排序樹的定義
二叉排序樹也稱為二叉查找樹。二叉排序樹或者是一棵空樹,或者是一棵具有如下特性的非空為茶樹
總結來說:左子樹結點值 < 根結點值 < 右子樹結點值
二叉排序樹的查找
步驟:
二叉排序樹的插入
步驟:
二叉排序樹的構造
二叉樹的構造需要與二叉樹的插入相結合
void create_BST(vector<int> nums, BSTNode *root) { // root 的關鍵值是nums[0]int len = nums.size();int i = 1;while(i<len){BST_insert(root,nums[i]);i++;} }二叉排序樹的刪除
刪除操作的實現過程按3種情況來處理:
總結來說就一個標準,刪除的結點后使刪除后BST依舊符合BST的基本約束,同時使整棵樹改變最少
二叉排序樹的查找效率
平均成功查找長度:ASL成功 = (層數)?(同層節點個數)n\frac{(層數)*(同層節點個數)}{n}n(層數)?(同層節點個數)?
平均失敗查找長度:ASL失敗 = (層數)?(同層與該節點子節點情況類似個數)n+1\frac{(層數)*(同層與該節點子節點情況類似個數)}{n+1}n+1(層數)?(同層與該節點子節點情況類似個數)?
詳情參考之前文章文章【【數據結構-查找】1.通俗易懂講解 —— 順序-折半-分塊查找】中的【折半查找】這一塊
總結
以上是生活随笔為你收集整理的【数据结构-树】3.详解二叉排序树(理论+代码)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【数据结构-树】2.二叉树遍历与线索二叉
- 下一篇: 【数据结构-树】4.图解平衡二叉树和哈夫